Есть ли в 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()
, поскольку бинарные операторы принимают только два аргумента, и я хотел бы применить бинарный оператор к большему количеству аргументов.