r - 如何检索...的内容作为调用列表?

标签 r parsing arguments expression substitution

如果我想查看传递给函数的表达式,可以使用 substitute 检索它.

f <- function(x)
{
  substitute(x)  
}

f(sin(pi))
## sin(pi)

( f 返回类 call 的对象。substitute 通常与 deparse 结合使用以将其转换为字符向量,但我在这里不关心。)

我想用 ... 中的参数重复这一点.此尝试仅返回第一个参数:
g <- function(...)
{
  substitute(...)
}

g(sin(pi), cos(pi / 2))
## sin(pi)

此尝试引发错误:
h <- function(...)
{
  lapply(..., subsitute)
}

h(sin(pi), cos(pi / 2))
## Error in match.fun(FUN) :
##   'cos(pi/2)' is not a function, character or symbol

此尝试会引发不同的错误:
i <- function(...)
{
  lapply(list(...), substitute)
}

i(sin(pi), cos(pi / 2))

## Error in lapply(list(...), substitute) : 
##   '...' used in an incorrect context

如何检索我传递给 ... 的表达式?

最佳答案

如果你想保留类调用的对象:

i <- function(...)
{
  l <- match.call()
  l <- as.list(l)
  l <- l[-1]
  l
}

i <- function(...)
{
  l <- match.call()
  l[[1]] <- as.name("expression")
  l
}
i(sin(pi), cos(pi/2))
或者也许你只需要 match.call 取决于你想要做什么。

关于r - 如何检索...的内容作为调用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269630/

相关文章:

r - 带有 utf-8 文本的脚本与 Windows 中的 RStudio 和命令行的运行方式不同

regex - 如何将度分秒转换为 R 中的十进制?

r - 将 r 数据框保存到谷歌表格

java - 解析具有迄今为止整数值的字符串

parsing - Monadic 解析函数珍珠 - 将多个解析器粘合在一起

javascript - JS如何使用父函数的参数调用函数内部的函数?

java - 如何使用curl发送参数?

r - 如何使用 ROCR 提取平均 ROC 曲线预测?

php查询。如何解析 <td> 表标记中的每第九个 <tr>

python - 使用 argparse 的 `add_subparsers` 方法实现两个位置参数