2016-04-01 25 views
0

私はリストのリストを持っていますが、各サブリストには何十もの要素があります。

x = list(`1` = list(a=1,b=2),`2` = list(a=3,b=4)) 

は、これを達成するための多くの方法がありますが、私は

lapply(x,`$`,"b") 
# $`1` 
# NULL 
# 
# $`2` 
# NULL 

てみて、できるだけ巧妙になりたいが、これは事実にもかかわらず、動作しないこと

`$`(x[[1]],"b") 
# [1] 2 

mapplyは次のように動作します。

mapply(`$`,x,MoreArgs=list(name="b")) 
# 1 2 
# 2 4 

私はこのようなlapply使用することができます。

lapply(x,getElement,"b") 
# $`1` 
# [1] 2 
# 
# $`2` 
# [1] 4 

をしかし、なぜそれがあるべき方法は$でないlapply動作しますか?

+1

を試すことができます。http://stackoverflow.com/q/18216084/1191259 – Frank

+0

おかげ@Frank - 私は投稿する前に私がいることを見ましたが、それは程度です私が子リストをサブセット化する親リストのサブセットに 'lapply'する。 – Mark

+0

それを書いた人として、私はあなたがサブセットについて何を意味するか分からないが、それは大丈夫だ。 – Frank

答えて

2

あなたはこれが役に立つかもしれ

lapply(x,'[[',"b")

$`1` 
[1] 2 

$`2` 
[1] 4 
+0

それはいいですが、私が望む以上に1文字です:) – Mark

+3

@マーク 'z < - \' [[\ '; lapply(x、z、 "b") ' – Frank

+0

@Frankどうして' z = '$'; lapply(x、z、 "b") 'は動作しますか? – Mark

関連する問題