繁体   English   中英

match.call也需要匹配顺序的函数

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

在我的研究中,在callmatch.callformals中没有任何内容允许我在这种情况下查找呼叫的特定输入顺序。 有任何想法吗? 非常感谢您的帮助。

您可以改用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.

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