r - 取样5次求和,更换

标签 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))}

我不明白为什么这个循环不起作用

最佳答案

您在 length(x) 前面漏掉了 1:(即从 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++ 方式(例如) 复制,如下所示:

定义函数:

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 ...

关于r - 取样5次求和,更换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30037580/

相关文章:

python - 如果cardNumberArray [0] == 4 : IndexError: list index out of range

python - 如何从文件夹内的 n 个 csv 文件导入数据?

c - 如何摆脱嵌套循环

python - NumPy 数组每列中负元素的总和

excel - 数据透视表中平均列的总和

javascript - 来自 JSON 的求和值

r - gdata 包中的 drop.levels(x) 和 as.factor(as.character(x)) 有什么区别?

r - R 中的反向变换 lsmeans

r - 名称未知的单独列

r - 编写 R 包 : needing a package I don't explicitly call