将名称 - 值对转换为R中的函数参数

时间:2014-06-20 21:04:26

标签: r function arguments

我正在写一个R函数,比如说foo()。我希望能够传入参数的名称和值,以便在foo()内的函数内进行求值。例如:

foo = function(inputArg, inputVal){
  return( rnorm(100, inputArg=inputVal) )
}

然后,我可以评估

foo("sd", 2)

并获得100个随机正态值的向量,标准差等于2.我该怎么做?

1 个答案:

答案 0 :(得分:4)

对于这种情况,最好使用do.call语法,它允许您将所有参数作为列表传递。例如

foo = function(inputArg, inputVal){
  args <- list(100, inputVal)
  names(args) <- c("", inputArg)
  do.call(rnorm, args)
}

我们可以像你期望的那样打电话。

foo("sd", 2)

这里args只是一个常规列表,其中每个元素对应一个您作为参数传递的值。如果要使用命名参数,可以设置列表的名称。如果您想将参数保留为位置(未命名),请将其名称设置为""