[英]match.call for function with order matched too
我有一個R函數,它通過...
接受命名的參數和其他參數。 例如:
f <- function(a, b, ...) {
mc <- as.list(match.call(expand.dots = TRUE)[-1])
### Lots of procesing on mc
return(mc)
}
因此,用戶可以輸入呼叫f(a = 3, c = 3, b = 3)
,它返回以下列表:
$a
[1] 3
$b
[1] 3
$c
[1] 3
但是,輸出順序與函數輸入參數的順序不匹配。 很明顯為什么會這樣,因為...
在函數參數的末尾。 但是我想知道是否有一種方法可以保留原始順序,即使同時使用了named和...
參數。 因此,輸出列表如下所示:
$a
[1] 3
$c
[1] 3
$b
[1] 3
在我的研究中,在call
, match.call
或formals
中沒有任何內容允許我在這種情況下查找呼叫的特定輸入順序。 有任何想法嗎? 非常感謝您的幫助。
您可以改用sys.call()
。
f <- function(a, b, ...) {
mc <- as.list(sys.call()[-1])
return(mc)
}
f(a = 3, c = 3, b = 3)
# $a
# [1] 3
#
# $c
# [1] 3
#
# $b
# [1] 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.