私は自分の機能を作りました(とても長く複雑です)。私の関数の出力は2つのリストのリストです。私の質問を明確にするために、私は自分の関数に似た簡単な例を作りました。私は100個の異なるデータへの私の関数を適用する必要がRのリストのリストの特定の要素を取得する方法は?
> x <- my_func(x=c(2,3,4),y=c(5,4,7))
> x
[[1]]
[[1]][[1]]
[1] 12 14 30
[[1]][[2]]
[1] 27 19 53
[[2]]
[[2]][[1]]
[1] 7 11 21
[[2]][[2]]
[1] 1 -5 -9
:
my_func <- function(x,y){
out1 <- list(x*y+2,x+y^2)
out2 <- list(x^2+y-2,y-x^2)
out <- list(out1,out2)
return(out)
}
は、その後、私はこれを得ました。次に、私は2つのリストから100の出力を得るでしょう。どのように私はlapply
関数を使用して特定の要素を取得することができます。私は要素にアクセスするには、次のコードを使用してい私の本来の機能では、
> x <- lapply(x,'[[','2')
> x
[[1]]
NULL
[[2]]
NULL
しかし:
Tはこれを試してみました。
> x[[1]][[1]]$par ##to get the first par (of list 1) of the first output list.
[,1] [,2] [,3] [,4] [,5]
[1,] 0.000000 0.000000 0.000000 0.000000 0
[2,] 2.545870 0.000000 0.000000 0.000000 0
[3,] 3.060626 2.879527 0.000000 0.000000 0
[4,] 2.015691 2.889324 2.967189 0.000000 0
[5,] 2.862635 2.511020 2.480592 1.781923 0
どのように私は、第1および第2のリストのすべての$par
にアクセスするためにlapply
機能を使用することができますか?助けてください?
変更を ' '働くだろう。文字インデックスではなく数値インデックスでサブセット化しています。あなたが既に文字ベクトルで名前をつけていれば、それはうまくいくはずです。そうでなければ 'lapply(x、 '[['、2)' – akrun