r - 使用带有 '...' 的 mapply

标签 r dplyr

在 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)

这里的关键是要注意第一个参数...是可选的并且可以是可变长度的(这里我传递ColumnHeader1ColumnHeader2)

但是,我想查看 a 和 b 输入数组的笛卡尔连接的 CustomFunct 的结果,例如:

a <- c(3,6,12,24)
b <- c(1,7)

我使用以下内容创建了 ab 的所有组合:

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/

相关文章:

r - dplyr:如何使用 mutate 函数制作一个结合前缀字符串和值序列的键

r - 使用 ggplot2 生成过滤列的条形图

regex - 检查字符值是否是有效的 R 对象名称

r - 带密度线的直方图

r - 将 color brewer 应用于 ggplot 中的一行

r - 如何使 'for loop' 跳过其中显示错误的一些迭代?

R dplyr : How do I apply a less than/greater than mapping table across a large dataset efficiently?

r - 如何将数据框扩展为从总和到单个观察

r - 由于特殊字符而面临更改数据帧结构的问题

r - 使用 plyr - R 分块后从一列中获取具有最高值的行