如何循环调用函数计算样本均值差并将结果存入空向量?
解决方法
首先需要修正你提供的test_sample代码——rnorm()的n参数要求是单个整数,原代码里的n=1:1000会生成1000个长度从1到1000的向量,这不符合测试样本的需求,正确写法如下:
test_sample <- rnorm(n=1000, mean=3, sd=2) empty_vector <- rep(NA, 10000)
你的mean_diff_sampler函数逻辑没问题,保留即可:
mean_diff_sampler <- function(pop_v, n){ sample1 <- sample(pop_v, size=n, replace = TRUE) sample2 <- sample(pop_v, size=n, replace = TRUE) mean1 <- mean(sample1) mean2 <- mean(sample2) diffmean <- mean1 - mean2 return(diffmean) }
下面提供两种实现10000次循环并存储结果的方式:
方法一:显式for循环
这是最直观的实现方式,直接遍历预定义的空向量,逐个赋值:
# 指定每次抽样的样本量,根据你的需求替换数值,比如n=50 sample_size <- 50 for(i in 1:length(empty_vector)){ empty_vector[i] <- mean_diff_sampler(pop_v = test_sample, n = sample_size) }
方法二:使用replicate()函数(更高效简洁)
R中推荐用这类向量化函数替代显式循环,代码更简洁且执行效率更高:
sample_size <- 50 # 直接生成10000次结果的向量 result_vector <- replicate(10000, mean_diff_sampler(pop_v = test_sample, n = sample_size)) # 如果一定要用你预先创建的empty_vector,直接赋值即可 empty_vector <- result_vector
内容的提问来源于stack exchange,提问作者NSA
相关产品推荐
相关产品推荐

