样品5次,总和,更换

时间:2015-05-04 18:42:25

标签: r for-loop sum resampling

我试图用轻微的扭曲替换样品。我想抽样列表,矢量等... 5次并总结。并替换5个采样值,并执行1000次。

x<- 1:1000
samp <- matrix(NA, ncol = 1, nrow = 1000)
for(i in length(x)){
samp[i,] <- sum(sample(x,5,replace = TRUE))}

我无法弄清楚为什么这个循环不起作用

1 个答案:

答案 0 :(得分:2)

您在1:前面错过了length(x)(即从1到x的长度为1)。你的代码应该是这样的:

x<- 1:1000
samp <- matrix(NA, ncol = 1, nrow = 1000)
for(i in 1:length(x)){
  samp[i,] <- sum(sample(x,5,replace = TRUE))}

哪个效果很好:

> str(samp)
 int [1:1000, 1] 2715 2312 3180 1364 2851 2429 2888 2381 2772 2317 ...

此外,for-loops在R中的速度很慢,所以您可能想要考虑其他循环方式,例如使用C++方式与(例如)replicate这样:

定义功能:

myfunc <- function(x) {
  sum(sample(x,5,replace = TRUE))
}

然后像这样使用它:

x <- 1:1000
mymat <- matrix(replicate(1000, myfunc(x)), ncol=1)

> str(mymat)
 int [1:1000, 1] 2481 2236 2492 1759 1905 3243 2606 2624 3013 2309 ...