R 如何在嵌套函数中使用match.call

R 如何在嵌套函数中使用match.call,r,function,arguments,R,Function,Arguments,我试图在函数组合中获得名称列表和…中的表达式。让我们假设一个函数: g <- function(...) { print(as.list(match.call(expand.dots = FALSE))$...) } 我们得到: [[1]] rnorm(5) $par [1] "a" [[3]] 4 + 4 这很好:我们可以得到每个参数的表达式调用并进行验证。但我需要这个,但在函数合成中: 我正在读一些章节,但我还没有找到解决办法。我知道,我需要凯普学习 有什么建议吗?提前谢

我试图在函数组合中获得名称列表和
中的表达式。让我们假设一个函数:

g <- function(...) {
  print(as.list(match.call(expand.dots = FALSE))$...)
}
我们得到:

[[1]]
rnorm(5)

$par
[1] "a" 

[[3]]
4 + 4
这很好:我们可以得到每个参数的表达式调用并进行验证。但我需要这个,但在函数合成中:

我正在读一些章节,但我还没有找到解决办法。我知道,我需要凯普学习


有什么建议吗?提前谢谢。

如果您只需要参数,不需要整个通话。只需使用
substitute()
访问
而不是
匹配。调用

g <- function(...) {
    print(substitute(...()))
}

f <- function(...)  g(...)
f(rnorm(5), par = "a", 4 + 4)

# [[1]]
# rnorm(5)
# 
# $par
# [1] "a"
# 
# [[3]]
# 4 + 4
g
f <- function(...)  g(...)

f(rnorm(5), par = "a", 4 + 4)
[[1]]
..1

$par
[1] "a"

[[3]]
..3
g <- function(...) {
    print(substitute(...()))
}

f <- function(...)  g(...)
f(rnorm(5), par = "a", 4 + 4)

# [[1]]
# rnorm(5)
# 
# $par
# [1] "a"
# 
# [[3]]
# 4 + 4
g <- function(...) {
    print( eval(substitute(alist(...))))
}