NB:我下面所做的可能不会直接有用。但我想了解为什么 R 会这样工作。
省略号 (
...
) 在 R 函数中具有特殊含义。直接评估它会抛出错误。
> ...
Error: '...' used in an incorrect context
> foo <- \(...) return(...)
> b <- foo(a=1)
Error: '...' used in an incorrect context
有趣的是,给它赋值不会引发错误。
> ... <- 1
对于其他保留字,如
NULL
或 NA
,会抛出错误
NULL <- 1
Error in NULL <- 1 : invalid (do_set) left side assignment
致 R 专家:这里究竟发生了什么?有没有原因,为什么赋值不会抛出错误?它在某些方面有用吗?
它不是一个保留字,它只是一个以特殊方式解释的名称。 保留字由解析器特殊处理。 只有代码评估器会特殊对待
...
,它没有语法含义。
据我所知,检索分配给名为
...
的变量的值的唯一方法是使用 get()
或类似的:
... <- 1
... # gives an error
get("...") # this is fine
globalenv()$... # so is this