У меня проблема с передачей нескольких аргументов в apply
в функцию. Чтобы быть точным, у меня есть логическая функция N аргументов, от a1 до aN , и я хочу вычислить таблицу истинности для данной функции. Вот пример, мажоритарная функция из 3 аргументов
majority <- function(a1, a2, a3) {
(a1 & a2) | (a2 & a3) | (a1 & a3)
}
Я также генерирую таблицу, содержащую все возможные входные данные для функции
truth <- matrix(nrow = 2^3, ncol = 3+1)
for (i in 1:(2^3)) {
truth[i, -(3+1)] <- rev(as.numeric(intToBits(i-1)))[-(1:(32-3))]
# a bit flimsy but thats not the point
}
Затем я хочу заполнить последний столбецсо значениями данной функции из соответствующей строки входов, но код ...
apply(truth[, -(3+1)], 1, majority)
... возвращает ошибку: Error in FUN(newX[, i], ...) : argument "a2" is missing, with no default
Как я могу использовать приложениефункция для передачи нескольких аргументов функции? Я знаю, что вы можете использовать функцию do.call
, чтобы передать список аргументов функции, но это не работает внутри приложения.
Любая помощь будет принята.