我在将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
如何使用apply函数将多个参数传递给函数?我知道您可以使用do.call
函数将参数列表传递给该函数,但这似乎不适用于Apply。
任何帮助将不胜感激。
答案 0 :(得分:0)
您可以在此处使用apply函数:
from tkinter import *
self.listnodes.delete(0, END)
在上面,将apply(truth[, -(3+1)], 1, function(x) majority(a1 = x[1], a2 = x[2], a3 = x[3]))
视为x
矩阵的给定行。我们将传递给您的多数功能truth
,a1 = x[1]
,a2 = x[2]
(a3 = x[3]
行中的三个元素)