在 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
)
但是,我想查看 a 和 b 输入数组的笛卡尔连接的 CustomFunct
的结果,例如:
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)
但这不起作用。有人可以帮我找到正确的语法吗?
最佳答案
使用 dplyr 来代替怎么样:
inputs %>% rowwise() %>% do(CustomFunc(ColumnHeader1, a=.$a, b=.$b))
关于r - 使用带有 '...' 的 mapply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39994368/