簡體   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