我正在写一个R函数,比如说foo()。我希望能够传入参数的名称和值,以便在foo()内的函数内进行求值。例如:
foo = function(inputArg, inputVal){
return( rnorm(100, inputArg=inputVal) )
}
然后,我可以评估
foo("sd", 2)
并获得100个随机正态值的向量,标准差等于2.我该怎么做?
答案 0 :(得分:4)
对于这种情况,最好使用do.call
语法,它允许您将所有参数作为列表传递。例如
foo = function(inputArg, inputVal){
args <- list(100, inputVal)
names(args) <- c("", inputArg)
do.call(rnorm, args)
}
我们可以像你期望的那样打电话。
foo("sd", 2)
这里args
只是一个常规列表,其中每个元素对应一个您作为参数传递的值。如果要使用命名参数,可以设置列表的名称。如果您想将参数保留为位置(未命名),请将其名称设置为""
。