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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。