r - 如何在不评估R的情况下扩展省略号(...)

标签 r lazy-evaluation ellipsis

我需要一个函数,该函数接受任意数量的参数并将其存储在变量中作为表达式,而不对其求值。我设法用match.call做到了,但似乎有点“笨拙”。

foo <- function(...) {
  expr <- match.call()
  expr[[1]] <- expression
  expr <- eval(expr)
  # do some stuff with expr
  return(expr)
}

> bla
Error: object 'bla' not found
> foo(x=bla, y=2)
expression(x = bla, y = 2)

澄清度

为了澄清,我在问如何编写一个类似于expression()的函数。出于无法解释的原因,我无法直接使用expression()

最佳答案

最惯用的方式是:

f <- function(x, y, ...) {
  match.call(expand.dots = FALSE)$`...`
}

关于r - 如何在不评估R的情况下扩展省略号(...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13353847/

相关文章:

haskell - 在 Haskell 中懒惰地评估一元函数

haskell - 惰性数据类型的内存使用情况

c++ - 为什么代码行即使从未运行也会出错?

r - 为什么惰性求值在这个 R 函数中不起作用?

R:使用带插入符号的 Ranger、tuneGrid 参数

r - 使用nnet时出错

r - 密度错误。默认.....需要至少 2 个点才能自动选择带宽

r - 获取一天内的事件总和

scala - 覆盖值的行为的原理

css - 是否可以仅在第一段应用文本溢出省略号?