[英]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.