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

Convert name-value pair to function argument in R

我正在编写R函数,例如foo()。我希望能够传递参数的名称和值以在foo()内部的函数中求值。例如:

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

然后,我可以评估

1
foo("sd", 2)

并获得一个包含100个标准偏差等于2的随机法线值的向量。我该怎么做?


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

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

,我们可以按照您的期望进行呼叫。

1
foo("sd", 2)

此处args只是一个常规列表,其中每个元素对应于您将作为参数传递的值。如果要具有命名参数,请设置列表的名称。如果要将参数保留为位置(未命名),请将其名称设置为""