元素和R中的多个向量

时间:2016-04-17 21:28:45

标签: r vector logical-operators

我有几个向量,我想&他们在一起(即我&每个向量的所有第一个元素,所有第二个,等等。假设它们都是相同的长度。结果应该是与各个向量长度相同的逻辑向量。

我想过这样做,但它不起作用:

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

2 个答案:

答案 0 :(得分: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()更快。我会把基准留给你。

答案 1 :(得分:0)

可替换地:

mapply(function(a,b,c) a & b & c, a, b, d)
[1] FALSE  TRUE    NA  TRUE