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