R中的行随机抽样

时间:2018-09-18 16:50:38

标签: r random

我想用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

1 个答案:

答案 0 :(得分: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