从数据框或矩阵中随机采样连续的行

Randomly sample contiguous rows from a data frame or matrix

我想从数据框中抽取一些连续的行 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

   .
   .
   .

我怎样才能做到这一点?

我们只需要对块的起始行索引进行采样。

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)