繁体   English   中英

r中的行随机抽样

[英]row random sampling in r

我想用replace=TRUE对 60 个随机行进行 1000 次采样,并计算每个样本中第一列和第二列之间的相关系数。

我不知道如何随机采样行,所以我尝试在 1:60 中采样 60 个数字,并匹配行号。 行数据是 60x2 矩阵,称为data1

我的代码是

k <- list()
data.sam <- list()

set.seed(1)

for (j in 1:60){
  for (i in 1:1000){
  k[[i]] <- sample(1:60, 60, replace = TRUE)
  }
  data.sam[[i]][j,] <- data1[k[[i]][j],]

  corr <- vector()
  corr[i] <- cor(data.sam[[i]][,1],data.sam[[i]][,2])
}

声明如下:

Error in `*tmp*`[[i]] : subscript out of bounds

看起来j变量的作用不大。 您的索引已经由 k[[i] 向量化,因此您不需要明确地使用两个循环。 也不要在循环内重置corr变量。

相反,我可能会写:

data1 <- matrix(rnorm(120), 60,2)

for (i in 1:1000){
  k[[i]] <- sample(1:60, 60, replace = TRUE)
  data.sam[[i]] <- data1[k[[i]],]

  corr[i] <- cor(data.sam[[i]][,1],data.sam[[i]][,2])
}

这给了这个:

hist(corr)

直方图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM