Я пытаюсь выполнить повторную выборку кадра данных R кластеризованным / заблокированным способом. Я делаю это с помощью приведенного ниже фрагмента кода, но он довольно медленный:
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