在 R 中映射具有多个参数的函数

问题描述 投票:0回答:1

我正在寻找 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)如果我想改变例如

c
d
*

我的解决方案相当麻烦。我要么为我的特定需求创建一个函数包装器(所以有很多包装器......),要么使用

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)

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

r purrr
1个回答
2
投票

这有帮助吗?

如果你只想改变

c

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

如果您只想更改

c
d

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

还有一个建议:不要使用

c
作为对象名称。
c
是创建向量的函数。其他东西是更好的编码风格。

© www.soinside.com 2019 - 2024. All rights reserved.