将多个参数传递给apply中的函数

时间:2019-10-13 09:39:05

标签: r

我在将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。

任何帮助将不胜感激。

1 个答案:

答案 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矩阵的给定行。我们将传递给您的多数功能trutha1 = x[1]a2 = x[2]a3 = x[3]行中的三个元素)