2016-03-28 18 views
0

Simülasyonları çalıştırmak için aşağıdaki kodu kullanıyorum. x1'dan a'u nasıl edinebilirim? Aşağıda lapply denedim ama işe yaramıyor.Listelerdeki veri çerçevelerini nasıl alabilirim?

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") 
+0

biz kabul edebilir bir veri çerçevesinin numarası ('a' veya 'a1' - 1) durumunda bilinir? Ya da tüm sütunlarda bu sütunu arayalım mı? – Julius

+0

@Julius, – HaagenDaz

+0

'a' bir' data.frame' değil, bir data.frame içinde bir 'vektör' olduğunu bildiğini varsayabiliriz. Aynısı 'b' için de geçerlidir ... Birlikte çalıştığınız veri yapılarını anlamıyorsunuz. –

cevap

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

bir veri çerçevesinin sayısı bilinir ve Daha genel 1. eşittir varsayıldığında vektörün gerekli listesini verir:

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

teşekkürler, yukarıdaki kodu biraz değiştirdim. Sadece “a” veya “a1” nasıl edinebilirim. – HaagenDaz

İlgili konular