17

当我[[.data.frame在我的电脑上查看内容时,我得到的是:

> get("[[.data.frame")
function (x, ..., exact = TRUE) 
{
    na <- nargs() - (!missing(exact))
    if (!all(names(sys.call()) %in% c("", "exact"))) 
        warning("named arguments other than 'exact' are discouraged")
    if (na < 3L) 
        (function(x, i, exact) if (is.matrix(i)) 
            as.matrix(x)[[i]]
        else .subset2(x, i, exact = exact))(x, ..., exact = exact)
    else {
        col <- .subset2(x, ..2, exact = exact)
        i <- if (is.character(..1)) 
            pmatch(..1, row.names(x), duplicates.ok = TRUE)
        else ..1
        .subset2(col, i, exact = exact)
    }
}
<environment: namespace:base>

我已经习惯了...,但这是我第一次看到..1..2。在 R 帮助和 Google 中的快速搜索大多返回垃圾,因为这些点通常被解释为占位符,所以我希望这里有人能给我指点?还是我错过了一些非常明显的东西?这些来自哪里,我该如何使用它们?

4

2 回答 2

16

这是一种引用特殊配对列表的第一个、第二个、...元素的方法,即.... ..1引用 的第一个元素的方式也是如此.....2引用 的第二个元素...以此类推。

这在R Internals手册的1.5.2 点-点-点参数部分中提到,其相关位是:

的值...是一个(特殊的)对列表,其元素由特殊符号..1, ..2, ... 引用,这些符号设置了位:当遇到其中之一时,在符号的值中DDVAL查找(通过)评价框架。ddfindVar...

于 2011-08-30T12:35:29.450 回答
5

添加到加文的答案:

?Reserved在保留字 ( )的帮助页面中也简要提及了它们。

一个非常简单的用法示例是

f <- function(...) print(..1)
f(x = 99)  #prints 99
f()        #throws an error
于 2011-08-30T13:44:27.847 回答