在R语言中,是否有内置函数可以在列表或数据框中调用二元运算符/函数?
例如,对于一个包含三个逻辑值的数据框:
set.seed(10)
foo <- matrix(as.logical(round(runif(24))), ncol = 3)
foo <- as.data.frame(foo)
现在我想做类似于这样的事情:
do.call.bin("|", foo)
因此,它将or运算符应用于所有列,得到:
[1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE
一个可能的实现方式如下:
do.call.bin <- function (fun.bin, lst) {
fun.bin <- match.fun(fun.bin)
if (length(lst) > 2) {
ret <- fun.bin(lst[[1]], Recall(fun.bin, lst[-1]))
} else {
ret <- fun.bin(lst[[1]], lst[[2]])
}
return (ret)
}
然而,我怀疑这种方法已经在R中实现了,尽管我到目前为止还没有找到。否则是否有更高效的方式来做到这一点?
由于二元运算符只接受两个参数,因此我无法使用do.call()
,而我想将二元运算符应用于更多的参数。
Reduce
正是我所需要的!Reduce("|", foo)
就可以了。 - user1197460