首页 > 解决方案 > 仅将一些参数作为 R 中的命名列表传递给函数

问题描述

给定一个函数

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

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

 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) 

标签: ruser-defined-functionsdo.call

解决方案


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

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

推荐阅读