R語言
dots
位於 base
包(package)。 說明
...
和 ..1
、 ..2
等用於引用從調用函數傳遞下來的參數。這些(以及以下內容)隻能在其形式參數中有 ...
的函數內部使用。
...elt(n)
是獲取 ..<n>
的函數式方法,與 eval(paste0("..", n))
基本相同,隻是更加優雅和高效。請注意,switch(n, ...)
非常接近,不同之處在於,當 n
為零或太大時,會以不可見的方式返回 NULL
,而不是返回錯誤。
...length()
返回 ...
和 ...names()
中的表達式數量 names
。這些與 length(list(...))
或 names(list(...))
相同,但不評估 ...
中的表達式(這發生在 list(...)
中)。
使用 ..1
、 ..2
、 ...elt(n)
等評估 ...
的元素會傳播 visibility 。這與命名參數的評估一致,命名參數也傳播可見性。
用法
...length()
...names()
...elt(n)
參數
n |
一個正整數,不大於 ... 中的表達式數量,與 |
例子
tst <- function(n, ...) ...elt(n)
tst(1, pi=pi*0:1, 2:4) ## [1] 0.000000 3.141593
tst(2, pi=pi*0:1, 2:4) ## [1] 2 3 4
try(tst(1)) # -> Error about '...' not containing an element.
tst.dl <- function(x, ...) ...length()
tst.dns <- function(x, ...) ...names()
tst.dl(1:10) # 0 (because the first argument is 'x')
tst.dl(4, 5) # 1
tst.dl(4, 5, 6) # 2 namely '5, 6'
tst.dl(4, 5, 6, 7, sin(1:10), "foo"/"bar") # 5. Note: no evaluation!
tst.dns(4, foo=5, 6, bar=7, sini = sin(1:10), "foo"/"bar")
## "foo" "" "bar" "sini" ""
## From R 4.1.0 to 4.1.2, ...names() sometimes did not match names(list(...));
## check and show (these examples all would've failed):
chk.n2 <- function(...) stopifnot(identical(print(...names()), names(list(...))))
chk.n2(4, foo=5, 6, bar=7, sini = sin(1:10), "bar")
chk.n2()
chk.n2(1,2)
也可以看看
...
和..1
,..2
是預訂的中的單詞R, 看Reserved
.
有關更多信息,請參閱 Introduction to R 手冊了解這些語法元素的用法,並參閱 dotsMethods 了解它們在正式 (S4) 方法中的使用。
相關用法
- R do.call 執行函數調用
- R dontCheck 抑製檢查的身份函數
- R double 雙精度向量
- R dump R 對象的文本表示
- R diag 矩陣對角線
- R deparse 表達式解析
- R deparseOpts 表達式解析選項
- R debug 調試函數
- R dcf 以 DCF 格式讀寫數據
- R data.class 對象類
- R dimnames 對象的暗名稱
- R dyn.load 對外函數接口
- R diff 滯後差異
- R dput 將對象寫入文件或重新創建它
- R duplicated 確定重複元素
- R dim 物體的尺寸
- R drop 刪除冗餘盤區信息
- R delayedAssign 延遲評估和承諾
- R difftime 時間間隔/差異
- R det 計算矩陣的行列式
- R detach 從搜索路徑中分離對象
- R data.frame DataFrame
- R data.matrix 將 DataFrame 轉換為數字矩陣
- R date 係統日期和時間
- R droplevels 刪除因子中未使用的級別
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 ..., ..1, etc used in Functions。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。