仅将一些参数作为 R 中的命名列表传递给函数
Posted
技术标签:
【中文标题】仅将一些参数作为 R 中的命名列表传递给函数【英文标题】:Pass only some arguments to a function as a named list in 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
需要使用相同的 a
和 b
值进行处理。除非我遗漏了什么,否则我似乎无法定义 部分 列表 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))
,但我想知道是否有更好的方法
【参考方案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)
【讨论】:
以上是关于仅将一些参数作为 R 中的命名列表传递给函数的主要内容,如果未能解决你的问题,请参考以下文章
如何将命名参数列表传递给打开的 Windows 窗体应用程序