簡體   English   中英

將data.table列分配給R中的變量

[英]Assign a data.table column to a variable in R

我在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”的順序)?

非常感謝你。

要解決此問題,您可以獲取該列的副本:

amt <- copy(DT$Amount)

當分配amt <- DT$Amount ,結果是“淺拷貝”,它只是指向原始列的指針。 當您想要創建data.table的副本時,會出現同樣的問題,其中最佳做法是DT2 <- copy(DT)

請注意,data.tables - 就像data.frames一樣,它們是一個特例 - 每個都是指向列的指針的向量; 並且此復制行為是從基礎R繼承的。例如:

DF <- data.frame(x=c(1,4,2)); xx <- DF$x; setorder(DF,x); identical(xx,DF$x) # TRUE

強烈建議使用上面的鏈接來獲取技術細節和最佳實踐建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM