【问题标题】:Convert name-value pair to function argument in R将名称-值对转换为 R 中的函数参数
【发布时间】:2014-06-20 21:04:26
【问题描述】:

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

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

然后,我可以评估

foo("sd", 2)

并得到一个包含 100 个标准差等于 2 的随机正态值的向量。我该怎么做?

【问题讨论】:

  • 非常次要的一点:如果您使用outer 以外的其他内容(例如foo)可能会有所帮助,以明确您指的不是实际该名称的功能。
  • @joran:很好,我已经更新了帖子。
  • 如果你不需要需要有两个参数的函数,你可以foo = function(...) rnorm(100, ...); foo(mean = 10) ; foo(sd = 10)

标签: r function arguments


【解决方案1】:

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

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

我们可以按照您的期望调用它。

foo("sd", 2)

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

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 2018-03-03
    • 2012-01-01
    • 1970-01-01
    • 2015-11-16
    • 2022-06-23
    • 2018-10-17
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多