为什么Dataa.table通过引用更新名称(DT),即使我将其赋值给另一个变量?我存储了一个data.table作为vector:library(data.table)set.seed(42)DT <- data.table(x = runif(100), y = runif(100))names1 <- names(DT)据我所知,这是一个普通的香草字符向量:str(names1)# chr [1:2] "x" "y"class(names1)# [1] "character"dput(names1)# c("x", "y")然而,这不是普通的字符向量。这是一个神奇的字符向量!当我向data.table,这个向量会被更新!DT[ , z := runif(100)]names1# [1] "x" "y" "z"我知道这和:=按任务更新,但这对我来说还是很神奇的,正如我所期望的那样。<-使.复制.的.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] TRUEDT[ , z := runif(100)]names1# [1] "x" "y" "z"names2# [1] "x" "y"我的问题有两个:为什么不names1 <- names(DT)创建data.table名字?在其他情况下,我们被明确警告<-创建副本,两个data.tableS和data.frameS.有什么区别names1 <- names(DT)和names2 <- c(names(DT))?
3 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
:=
nm <- copy(names(DT))
names(DT)
江户川乱折腾
TA贡献1851条经验 获得超5个赞
.Internal(inspect())
data.table
data.table
data.table
.
添加回答
举报
0/150
提交
取消