慕蓋茨4494581
2019-07-11 10:23:16
為什么Dataa.table通過引用更新名稱(DT),即使我將其賦值給另一個(gè)變量?我存儲(chǔ)了一個(gè)data.table作為vector:library(data.table)set.seed(42)DT <- data.table(x = runif(100), y = runif(100))names1 <- names(DT)據(jù)我所知,這是一個(gè)普通的香草字符向量:str(names1)# chr [1:2] "x" "y"class(names1)# [1] "character"dput(names1)# c("x", "y")然而,這不是普通的字符向量。這是一個(gè)神奇的字符向量!當(dāng)我向data.table,這個(gè)向量會(huì)被更新!DT[ , z := runif(100)]names1# [1] "x" "y" "z"我知道這和:=按任務(wù)更新,但這對(duì)我來說還是很神奇的,正如我所期望的那樣。<-使.復(fù)制.的.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"我的問題有兩個(gè):為什么不names1 <- names(DT)創(chuàng)建data.table名字?在其他情況下,我們被明確警告<-創(chuàng)建副本,兩個(gè)data.tableS和data.frameS.有什么區(qū)別names1 <- names(DT)和names2 <- c(names(DT))?
3 回答

蝴蝶刀刀
TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
:=
nm <- copy(names(DT))
names(DT)

江戶川亂折騰
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
.Internal(inspect())
data.table
data.table
data.table
.
添加回答
舉報(bào)
0/150
提交
取消