【发布时间】:2012-12-21 11:22:31
【问题描述】:
我打算使用 R 中的“clhs”包从总体(a、b、c、d、... 见下文)中提取代表性样本。采样过程在我的(多核)计算机上需要很长时间,所以我想并行运行采样程序(同时使用多个 CPU 内核)。
这些是我想要从中抽取样本的一些(示例)数据框(“人口”):
a <- as.data.frame(replicate(1000, rnorm(20)))
b <- as.data.frame(replicate(1000, rnorm(20)))
c <- as.data.frame(replicate(1000, rnorm(20)))
d <- as.data.frame(replicate(1000, rnorm(20)))
我要运行的clhs代码是:
clh_a <- clhs(x=a, size=round(nrow(a)/5), iter=2000, simple=F)) # 20% of all samples should be selected
clh_b <- clhs(x=b, size=round(nrow(b)/5), iter=2000, simple=F))
等等……
并行运行此采样过程的方法是什么?或者还有其他有效的方法吗?
附录(非常感谢“zipfzapf”):
我试图使用“parLapply” - 不幸的是,最后,R 抛出一条错误消息:“长度错误(x):'x' 丢失”,老实说我不明白.. . 有什么想法吗?
我的代码:
library("snow")
a <- as.data.frame(replicate(1000, rnorm(20)))
b <- as.data.frame(replicate(1000, rnorm(20)))
c <- as.data.frame(replicate(1000, rnorm(20)))
d <- as.data.frame(replicate(1000, rnorm(20)))
abcd <- list(a, b, c, d)
cl <- makeCluster(4)
results <- parLapply(cl,
X = abcd,
FUN = function(i) {
clhs(x = i, size = round(nrow(i) / 5), iter = 2000, simple = FALSE)
},
)
【问题讨论】:
标签: r parallel-processing sampling