如何打破下面的列表x1
并分别看到输出a
和b
library(parallel)
set.seed(0)
system.time(
x1 <- parLapply(cl,1:10000,function(i) {
n<-rpois(1,4)
c(a=c(n,rexp(rpois(1,n),rate=0.1)),
b=c(n,rexp(rpois(1,n), rate=0.1)))
}
)
)
答案 0 :(得分:2)
您必须结构化该功能的结果。这是我的建议:
list(a=list(n=n, r=rexp(rpois(1,n), rate=0.1)), b=list(n=n, r=rexp(rpois(1,n), rate=0.1)))
n
不是必需的 - 如果需要,可以使用length(...)
或nrow()
进行重建。所以可以做data.frame(a=rexp(rpois(1,n), rate=0.1), b=rexp(rpois(1,n), rate=0.1))
以下是我对您的代码的建议:
library(parallel)
set.seed(0)
system.time(
x1 <- parLapply(cl, 1:10000,
function(i) {
n <- rpois(1,4)
data.frame(a=rexp(rpois(1,n), rate=0.1), b=rexp(rpois(1,n), rate=0.1))
}
)
)
注:
a
和b
可以包含不同数量的元素(取决于对rpois(1,n)
的两次调用的结果)。在这种情况下,构建数据帧的尝试会产生错误。