我有几个向量,我想&
他们在一起(即我&
每个向量的所有第一个元素,所有第二个,等等。假设它们都是相同的长度。结果应该是与各个向量长度相同的逻辑向量。
我想过这样做,但它不起作用:
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 :(得分: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