Chr*_*h_J 27 r pass-by-reference data.table
在测试我的代码时,我发现了以下内容:如果我将data.table分配DT1给DT并在DT之后进行DT1更改,则使用它进行更改.所以DT,DT1似乎是内部联系的.这是预期的行为吗?虽然我不是编程专家,但这对我来说是错误的,并且用简单的R变量或a来测试它data.frame,我无法重现这种行为.这里发生了什么事?
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
Run Code Online (Sandbox Code Playgroud)
Ram*_*ath 26
这篇文档data.table会有所帮助.? data.table::copy
没有返回任何值.data.table通过引用修改.如果您需要副本,请先复制一份(使用DT2 = copy(DT)).copy()有时可能在以下之前有用:=用于通过引用子列分配给列.