如何在列表中获取数据框?

时间:2016-03-28 15:18:04

标签: r

我使用以下代码运行模拟。如何从a获取x1?我在下面尝试lapply,但似乎无法正常工作。

library(parallel)
clusterEvalQ(cl,library(evir))
set.seed(0)
system.time(
 x1 <- parLapply(cl, 1:100000,
   function(i) {
       n1 <- rpois(1,4)
       n2<-  rpois(1,7)
       list(data.frame(a=rexp(n1, rate=0.1),a1=rexp(n1, rate=0.6)), 
            data.frame(b=rexp(n2, rate=0.7),b1=rexp(n2, rate=0.6)))

   }
  )
)

y1<-lapply(x1, '[', , "a")

1 个答案:

答案 0 :(得分:1)

y1 <- lapply(x1, function(x) x[[1]][["a"]])

给出一个必需的向量列表,假设数据帧的数量是已知的并且等于1.更一般地说:

y1 <- Filter(Negate(is.null), sapply(unlist(x1, rec = FALSE), `[[`, "a"))