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