R的data.table包在存储列名称的向量时表现出 operations by reference 行为:
STDOUT_FILENO
我没想到对象> library(data.table)
> dt <- data.table(x=1,y=2)
> vars <- names(dt)
> vars
[1] "x" "y"
> dt[, z:=3]
> vars
[1] "x" "y" "z"
会像这样“更新”(包含稍后创建的vars
中的列名)。如果我使用dt
,它不会更新,就好像存储列名是通过引用操作一样,类似于复制整个data.table。
像vars <- copy(names(dt))
这样的其他函数不会像这样“更新”。
我的问题是:什么时候需要使用nrow()
,什么时候不需要?我原本以为它仅用于复制整个data.tables,但这使我想知道还需要其他什么地方。