【发布时间】:2016-10-12 08:28:10
【问题描述】:
在 R 中,我试图将可选参数 ... 传递给使用 mapply 的自定义函数,但没有成功。这是我想要做的:
我已经定义了一个函数:
require(dplyr)
CustomFunc <- function(...,a,b) {
Data %>%
mutate (X1 = a * Column1,
X2 = b * Column2) %>%
group_by(...) %>%
summarise( GrandTotal =sum(X1/X2) )
}
我可以通过例如传递来很好地使用这个函数
CustomFunct(a= 4, b = 7)
或者例如这也有效:
CustomFunct(ColumnHeader1,ColumnHeader2,
a= 4, b = 7)
这里的关键是要注意第一个参数... 是可选的并且可以是可变长度的(这里我传递ColumnHeader1 和ColumnHeader2)
但是,我希望看到来自 CustomFunct 的结果,用于 a 和 b 的输入数组的笛卡尔连接,例如:
a <- c(3,6,12,24)
b <- c(1,7)
我使用以下方法创建了 a 和 b 的所有组合:
inputs <- expand.grid( a = c(3,6,12,24),
b = c(1,7) )
我可以使用以下代码让CustomFunct 工作
mapply(CustomFunct,
a = inputs$a,
b = inputs$b)
然而,我正在寻找的是能够将可选参数 ... 传递给 CustomFunct,在我的脑海中看起来像这样:
mapply(CustomFunct,
... = list(ColumnHeader1,ColumnHeader2),
a = inputs$a,
b = inputs$b)
但这不起作用。有人可以帮我找到正确的语法吗?
【问题讨论】:
-
请注意您不应使用
require。它默默地吞下错误;请改用library。