用多个参数映射R中的函数

时间:2020-06-29 09:48:48

标签: r purrr

我正在寻找将函数映射到多个参数的R方法(最好是“ Tidyverse方法”)。

我创建了具有多个参数的函数:

product <- function(a=1, b=2, c=3, d=4){
  return(c(a,b,c,d,a*b*c*d))
}

我正在寻找最方便的方法来多次使用具有不同参数的函数。我可以使用map包中的purrr函数(在某种程度上),但是有两种情况会卡住我:

1)如果我只想更改c

2)例如,如果我想更改cd *

我的解决方案比较麻烦。我要么根据我的特定需求围绕该函数创建包装器(所以很多包装器...),要么使用pmap包中的purrr函数,例如:

a <- list(1,1,1,1,1)
b <- list(2,2,2,2,2)
c <- list(1,2,3,4,5)
d <- list(4,4,4,4,4)

pmap(list(a,b,c,d), product)

是否有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:2)

有帮助吗?

如果您只想更改c

map(1:4, product, a = 1, b = 2, d = 4)

如果您只想更改cd

pmap(list(1:4, 11:14), product, a = 1, b = 2)

还有一个建议:不要使用c作为对象名称。 c是创建矢量的函数。还有其他更好的编码样式。