【问题标题】:Pass only some arguments to a function as a named list in R仅将一些参数作为 R 中的命名列表传递给函数
【发布时间】:2020-04-04 14:29:21
【问题描述】:

给定一个函数

 power <- function(x,a,b) b*x^a

我知道,我可以使用命名列表使用do.call 调用它,而不是使用power(c(1:10),2,1.5) 调用它,使用

 parms=list(x=c(1:10),a=2,b=1.5)
 do.call("power",parms)

但是,假设我有不同的向量 x 需要使用相同的 ab 值进行处理。除非我遗漏了什么,否则我似乎无法定义 部分 列表 parms=list(a=2,b=1.5),然后以不同的 x 值重新使用此类列表,类似于

 power(c(1:10),parms)

 do.call("power",c(1:10),parms) 

【问题讨论】:

  • 和你想的一样——下面的方法可以工作do.call("power",list(x=c(1:10), a=2,b=1.5))。这是否解决了您的用例?
  • 为了重用parms,它应该类似于do.call("power",append(list(x=c(1:10)),parms)),但我想知道是否有更好的方法

标签: r user-defined-functions do.call


【解决方案1】:

如何将不改变的参数设置为函数的默认参数。

power <- function(x,a = 2,b = 1.5) b*x^a

lapply(list(1:10, 11:20), power)

#[[1]]
# [1]   1.5   6.0  13.5  24.0  37.5  54.0  73.5  96.0 121.5 150.0

#[[2]]
# [1] 181.5 216.0 253.5 294.0 337.5 384.0 433.5 486.0 541.5 600.0

【讨论】:

    【解决方案2】:

    我们可以使用pmap

    library(purrr)
    pmap(parms, power)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2011-06-11
      • 2017-04-09
      • 1970-01-01
      相关资源
      最近更新 更多