【发布时间】:2020-09-16 08:50:24
【问题描述】:
我正在尝试以集群/阻塞方式重新采样 R 数据帧。我正在使用下面的代码 sn-p 这样做,但速度很慢:
index_sample <- sample(unique(data[[cluster_var]]),
size=length(unique(data[[cluster_var]])), replace=T)
indices <- unlist(sapply(index_sample, FUN=function(x) {which(data[[cluster_var]] == x)}))
有没有更有效的方法来做到这一点?特别是 unlist/sapply 步骤似乎非常缓慢。
期望行为示例:
set.seed(1919)
data <- data.frame(x=sample(seq(1,5,1), 20, replace=TRUE),
y = runif(20))
index_sample <- sample(unique(data[['x']]),
size=length(unique(data[['x']])), replace=T)
indices <- unlist(sapply(index_sample, FUN=function(x) {which(data[['x']] == x)}))
print(indices)
[1] 7 8 9 10 14 17 20 7 8 9 10 14 17 20 1 12 2 18 19 6 11 13 16
【问题讨论】:
标签: r dataframe sampling sapply