从数据框或矩阵中随机抽取连续的行

6
我希望能够从数据框df中抽取一些连续的行。
df <- data.frame(C1 = c(1, 2, 4, 7, 9), C2 = c(2, 4, 6, 8, 10))

我想要得到类似以下内容的东西,它允许我随机抽取3行并重复这个过程100次。
test <- replicate(100, df[sample(1:nrow(df), 3, replace=T),], simplify=F)

通过“连续”的概念,其结果应该类似于:
 [[1]]  
           C1 C2
   2       2  4
   3       4  6
   4       7  8

 [[2]]
           C1 C2
   1       1  2
   2       2  4
   3       4  6

   .
   .
   .

我该如何实现这个目标?
1个回答

7
我们只需要为块抽取样本的起始行索引。
sample.block <- function (DF, chunk.size) {
  if (chunk.size > nrow(DF)) return(NULL)
  start <- sample.int(nrow(DF) - chunk.size + 1, 1)
  DF[start:(start + chunk.size - 1), ]
  }

replicate(100, sample.block(df, 3), simplify = FALSE)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接