2012-10-28 10 views
7

は私がリストを持っていると仮定します。リスト内の各要素をテストする場合

alist<- list(4,6,8,9) 

各リスト要素があれば7より大きく、その真の場合は1のリストを返し、0であれば、私はテストをしたいに偽です。

しかし、私はlapplyを使用する必要があります。

lapply(alist,if,>7,1) or lapply(alist,if,cond>7,1) 

もちろん、次のエラーは発生しません。

Error: unexpected ',' in "lapply(alist, if," 
+0

あなたは 'lapply'を使いたいと思いますが、' as.numeric(alist> 7) 'はうまく動作します。 –

+3

"は' lapply' "=" "ばかげた宿題を使う必要がありますか? –

+0

ハハイップカールあなたはそれを釘付け。私はこれに遭遇したときに割り当てを理解する方法の約30%を考えていました。それはいい質問だったと思ったが、lapplyが議論として...どこかで私はif文を完成させることができた。 – user1181337

答えて

17

これは非常にうまくいきませんので、私はこれに答えるつもりです。あなたは、より明示的なことしようとすると、のように括弧を使用することができます。

すべての
lapply(alist, function(x) if (x > 7) {1} else {0}) 

またはベクトル化ifelse

lapply(alist, function(x) ifelse(x > 7, 1, 0)) 

またはベスト:

as.numeric(alist > 7) 
+0

+1私の答えと同じですが、私はifelse()が新しいRユーザーであるように少し直感的ではないことに注意します。面白いことに、これは私がこれを言う前に直面する問題はifelse()lolのクロージャーエラーについて不平を言っていたからです。 –

+0

あなたは 'ifelse'について非常に正しいです(IMO)。私は最後の夕方にも 'if(){} else {}'を使っていたはずです –

2

もう2:

lapply(alist > 7, as.integer) 

または

lapply(alist > 7, ifelse, 1, 0) 
関連する問題