2016-04-17 28 views
1

私はいくつかのベクトルを持っています。私は&を一緒にしたいと思います(つまり、私は&すべてのベクトルのすべての最初の要素、すべての2番目のものなど)。それらがすべて等しい長さであると仮定してください。結果は個々のベクトルと同じ長さの論理ベクトルでなければなりません。要素単位と複数のベクトルR

私はこれをやって考えるが、それはうまくいきませんでした:

a = c(NA, 1, 2, 3) 
b = c(0, 1, 2, 3) 
d = c(NA, 1, NA, 3) 
do.call("&", list(a, b, d)) 
# Error in do.call("&", list(a, b, d)) : binary operations require two arguments 
+0

はちょうど行くことを与えていました。私はそれが正しいものだと思う..常にそれらのReduce、Map、等について忘れてください!ありがとう!答えにコピーすると受け入れる – Alex

答えて

2

私はあなたがReduce()をしたいと思います。

Reduce("&", list(a, b, d)) 
# [1] FALSE TRUE NA TRUE 

これは、要素ごとにリストの下に&を適用します。

v <- logical(4) 
for(i in 1:4) v[i] <- a[i] & b[i] & d[i] 
v 
# [1] FALSE TRUE NA TRUE 

に対してチェック実際にfor()ループはさらにReduce()より速いかもしれません。私はあなたにベンチマークを残します。また

+0

Reduceは自分の目的にはより良いと思います。なぜなら、単純にリストにバインドするベクトルの数は不明です – Alex

0

mapply(function(a,b,c) a & b & c, a, b, d) 
[1] FALSE TRUE NA TRUE 
関連する問題