"[.data.frame"的正文中的".1"

Nic*_*bbe 17 r ellipsis dataframe

当我查看电脑上的内容时[[.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>
Run Code Online (Sandbox Code Playgroud)

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

Rei*_*son 16

这是一种参考特殊旋风的第一,第二......元素的方法....所以..1是引用第一个元素的方式...,..2指的是第二个元素,...依此类推.

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

的值...是(特殊)成对列表,其元素由特殊符号被称为..1,..2,...,其具有DDVAL位集:当遇到这些中的一个是抬头(通过ddfindVar在的值)...的符号在评估框架.


Ric*_*ton 5

添加到Gavin的答案:

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

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

f <- function(...) print(..1)
f(x = 99)  #prints 99
f()        #throws an error
Run Code Online (Sandbox Code Playgroud)