【发布时间】:2015-09-03 01:30:34
【问题描述】:
我对 R 中 data.table 列的分配有疑问。我的示例代码如下:
library(data.table)
DT <- data.table(A=c(3,5,2,6,4), B=c(6,2,7,2,1), Amount=1:5)
setkey(DT, A)
amt <- DT$Amount
amt #3 1 5 2 4
setkey(DT, B)
amt #5 2 4 1 3
我使用“$”符号将 data.table 的列分配给变量“amt”,但看起来在我更改 data.table 的顺序后,“amt”的顺序也发生了变化。谁能告诉我为什么会这样?以及如何避免这种情况发生(我不希望在更改 DT 顺序时更改“amt”的顺序)?
非常感谢。
【问题讨论】:
-
我的猜测:
DT$Amount是指向数据表列的指针,而不是向量的副本。如果您想要一份副本,您可以使用该功能amt <- copy(DT$Amount)。如果您尝试使用DT2 <- DT复制 DT,您会遇到同样的问题——同样,copy()就是答案。 -
@Frank 回答,为什么要在 data.table 标签上保留未解决的问题?
-
@jangorecki 好的,完成。我希望你们知道技术细节的人会根据需要编辑答案。我认为链接的问题涵盖了所有内容,因此最好将其两个答案保持最新(最后一次编辑于 2013 年 1 月)。
-
请看一下 Reference Semantics vignette here.
标签: r data.table variable-assignment