Eri*_*lez 6 r sample matrix dataframe
我想从数据框中采样一些连续的行df.
df <- data.frame(C1 = c(1, 2, 4, 7, 9), C2 = c(2, 4, 6, 8, 10))
Run Code Online (Sandbox Code Playgroud)
我试图获得类似于以下内容的东西,这允许我对3个随机行进行采样并重复该过程100次.
test <- replicate(100, df[sample(1:nrow(df), 3, replace=T),], simplify=F)
Run Code Online (Sandbox Code Playgroud)
通过连续,结果应该是这样的:
[[1]]
C1 C2
2 2 4
3 4 6
4 7 8
[[2]]
C1 C2
1 1 2
2 2 4
3 4 6
.
.
.
Run Code Online (Sandbox Code Playgroud)
我怎么能实现这个目标?
我们只需要对块的起始行索引进行采样.
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)
Run Code Online (Sandbox Code Playgroud)