如何打破R中的列表

时间:2016-03-21 10:11:03

标签: r

如何打破下面的列表x1并分别看到输出ab

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)))
    }
  )
)

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))
     }
  )
)

注:
ab可以包含不同数量的元素(取决于对rpois(1,n)的两次调用的结果)。在这种情况下,构建数据帧的尝试会产生错误。