r中的行随机抽样

问题描述 投票:1回答:1

我想用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
r random
1个回答
1
投票

它看起来不像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)

histogram

© www.soinside.com 2019 - 2024. All rights reserved.