在 lapply 中指定 X 提供的参数

Specify which argument is supplied by X in lapply

我有一个功能,例如fun(a, b = 1, c = 3, ...),接受多个参数,其中一些具有默认值。我想使用 lapply(X, FUN, ...) 调用此函数,但明确指定我希望 X 提供哪个参数。在上面的示例中,可以为 abc... 中的 xyz 提供 X 向量。

通常我会调用 lapply(1:5, fun, a = 4),我想它会使用 1:5 作为 b 参数。

处理您的用例的一种方法是在 lapply 向您公开的自定义函数中简单地调用您自己的函数:

lst <- list(v1=c(1:3), v2="Hello", v3=5)

result <- lapply(lst, function(x) {
                         y <- FUN(x, a, b, c, ...)   # Here FUN() is your own function
                         return(y)
                      })

Normally I might call lapply(1:5, fun, a = 4) and I imagine it would use 1:5 as the b argument.

是的,你的想象是正确的。 lapply 使用位置匹配将其 X 参数传递给函数。正常 rules of argument matching 适用,这意味着命名参数的精确匹配优先。

另一种方法当然是将 fun 包装在一个匿名函数中:

lapply(1:5, function(b, a, ...) fun(a = a, b = b, ...), a = 4)