繁体   English   中英

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

[英]How use match.call in a nested function

我试图让名的列表和表达...在一个函数组成。 让我们假设一个函数:

g <- function(...) {
  print(as.list(match.call(expand.dots = FALSE))$...)
}

如果我们打电话给:

g(rnorm(5), par = "a", 4 + 4)

我们得到:

[[1]]
rnorm(5)

$par
[1] "a" 

[[3]]
4 + 4

很好:我们可以获取每个参数的表达式调用并进行验证。 但是我需要这个但是在函数组成中

f <- function(...)  g(...)

f(rnorm(5), par = "a", 4 + 4)

但是我得到:

[[1]]
..1

$par
[1] "a"

[[3]]
..3

我正在阅读某些章节http://adv-r.had.co.nz/Expressions.html,但是我找不到解决方案。 我知道,我需要学习。

有小费吗? 提前致谢。

如果只需要参数,则不需要整个调用。 只需使用substitute()即可访问...而不是match.call

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(...))))
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM