如果我想查看传递给函数的表达式,可以使用 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/