我認爲這個問題與R中Mutable Vs不可變對象的概念有關,它可能是一個「開始問題」。我遇到了這個問題,其中函數names()
和setnames()
功能包data.table
。我相信這是預期的行爲,但對我來說這是相當令人驚訝的,我相信這不僅與names()
有關。返回R中Mutable或Immutable變量的函數
想象我有一個兩列A和B稱爲dt
data.table:
dt <- data.table(a = 1:5, b= 1:5)
oldNames <- names(dt)
如果打印oldNames
這顯然表明:
oldNames
[1] "a" "b"
但是,如果你恰克的dt
名稱與setnames()
:
setnames(dt,oldNames,c("aNew","bNew"))
變量oldNames
的內容已更改。
oldNames
[1] "aNew" "bNew"
我知道,在Python這是一些數據類型(易變的),而不是在別人(的inmutable的)預期的行爲。在R中,是否也有這種雙子宮切開術?
對我而言,「預期」行爲將是變量oldNames
存儲列的名稱,它不依賴於data.table的未來更改。例如,與length()
功能不會發生這種情況:
L <- length(dt)
L
[1] 2
dt[,c:=1:5]
L
[1] 2
到有關此問題或解釋一些有用的信息的任何鏈接將非常感激,並會產生什麼方式代碼,以便oldNames
不改變其dt修改後的內容。
你是正確的,這是重複的,我認爲這是一般Data.Table沒有的R問題/行爲。 非常感謝。 –