24
在測試我的代碼,我發現了以下內容:如果我分配data.table DT1
到DT
和更改DT
之後,DT1
隨着它變化。所以DT
和DT1
似乎是內部鏈接。這是預期的行爲?儘管我不是編程專家,但這看起來不對,而且使用簡單的R變量或data.frame
進行測試,我無法重現該行爲。這裏發生了什麼事?:=(通過引用傳遞)操作者在data.table包修改另一個數據表對象同時
DF <- data.frame(ID=letters[1:5],
value=1:5)
DF1 <- DF
all.equal(DF1, DF)
[1] TRUE
DF[1, "value"] <- DF[1, "value"]*2
all.equal(DF1, DF)
[1] "Component 2: Mean relative difference: 1"
library(data.table)
data.table 1.7.1 For help type: help("data.table")
DT <- data.table(ID=letters[1:5],
value=1:5)
DT1 <- DT
all.equal(DT1, DT)
[1] TRUE
DT[, value:=value*2]
ID value
[1,] a 2
[2,] b 4
[3,] c 6
[4,] d 8
[5,] e 10
all.equal(DT1, DT)
[1] TRUE