【发布时间】:2014-12-03 20:27:45
【问题描述】:
我遇到了流行的data.table 包,其中一件事特别让我感兴趣。它有一个就地赋值运算符
:=
这在基础 R 中没有定义。事实上,如果您没有加载 data.table 包,如果您尝试使用它(例如,a := 2)会引发错误并显示以下消息:
错误:找不到函数
":="
另外,为什么:= 有效?为什么 R 允许您将 := 定义为中缀运算符,而其他所有中缀函数都必须被 %% 包围,例如
`:=` <- function(a, b) {
paste(a,b)
}
"abc" := "def"
显然,它并不是%function.name% 用于定义中缀函数的替代语法。 data.table 是否在利用 R 的一些解析怪癖?是黑客吗?以后会“打补丁”吗?
【问题讨论】:
-
请查看 data.table 文档,可能从常见问题解答开始。
-
@DirkEddelbuettel。我了解它在 data.table 中的使用方式。但是 R 允许定义这样的运算符并且不会导致语法错误这一事实让我很感兴趣。这是关于 R 以及它如何解析代码的基本问题。
-
AFAIK 它是本地的 data.table 并且仅适用于
[子集。所以你的问题是偏离基础的(不是 R 怪癖),这就是为什么我把你送到 data.table 文档讨论这个。 -
@DirkEddelbuettel 我认为你没有理解我的意思。我可以使用
:= -
This Q&A 来自 Matt 在这里可能也非常相关。
标签: r data.table colon-equals