相关疑难解决方法(0)

为什么data.table通过引用更新名称(DT),即使我分配给另一个变量?

我已将a的名称存储data.tablevector:

library(data.table)
set.seed(42)
DT <- data.table(x = runif(100), y = runif(100))
names1 <- names(DT)
Run Code Online (Sandbox Code Playgroud)

据我所知,这是一个普通的香草字符向量:

str(names1)
# chr [1:2] "x" "y"

class(names1)
# [1] "character"

dput(names1)
# c("x", "y")
Run Code Online (Sandbox Code Playgroud)

但是,这不是普通的字符向量.这是一个神奇的角色矢量!当我向我添加一个新列时data.table,此向量会更新!

DT[ , z := runif(100)]
names1
# [1] "x" "y" "z"
Run Code Online (Sandbox Code Playgroud)

我知道这与如何:=通过作业进行更新有关,但这对我来说仍然是神奇的,因为我希望<-能够复制这些data.table名字.

我可以通过将名称包装在c():

library(data.table)
set.seed(42)
DT <- data.table(x = runif(100), y = runif(100))

names1 <- names(DT)
names2 <- c(names(DT))
all.equal(names1, names2)
# [1] TRUE …
Run Code Online (Sandbox Code Playgroud)

r data.table

40
推荐指数
1
解决办法
2456
查看次数

标签 统计

data.table ×1

r ×1