为什么赋值给省略号 `... <- 1` not throw an error?

问题描述 投票:0回答:1

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 专家:这里究竟发生了什么?有没有原因,为什么赋值不会抛出错误?它在某些方面有用吗?

r ellipsis
1个回答
0
投票

它不是一个保留字,它只是一个以特殊方式解释的名称。 保留字由解析器特殊处理。 只有代码评估器会特殊对待

...
,它没有语法含义。

据我所知,检索分配给名为

...
的变量的值的唯一方法是使用
get()
或类似的:

... <- 1
...             # gives an error
get("...")      # this is fine
globalenv()$... # so is this
© www.soinside.com 2019 - 2024. All rights reserved.