2016-03-28 11 views
0

次のコードを使用してシミュレーションを実行しています。 x1からaを取得するにはどうすればよいですか?私は以下の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") 
+0

我々は、データフレームの数(と仮定することができます'a'または' a1'の場合-1)が知られていますか?または、すべてのデータフレームにわたってこの列を探す必要がありますか? – Julius

+0

@Julius我々はそれが知られていると仮定することができます – HaagenDaz

+0

'a'は' data.frame'ではありません。これはdata.frame内の 'vector'です。同じことが 'b'にも当てはまります...あなたが作業しているデータ構造を理解していません。 –

答えて

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

データフレームの数が知られており、より一般的には1に等しいと仮定し、ベクターの必要なリストを与える:

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

ありがとう、私は上記のコードを少し変更しました。どうすれば 'a'か' a1'しか得ることができません。 – HaagenDaz

関連する問題