[問題] 複製data.table後,改column name

看板R_Language作者 (小肥羊)時間10年前 (2014/04/23 10:44), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門~使用者 [問題敘述]: 各位好,我在使用data.table 的setnames function發現一個問題。 假設我有一個data.table: a 我讓b=a之後用setnames去改b的column names 結果a也會一起被改動。有辦法避免嗎? (因為a,b的rows都很多,原則上不希望用 names(b)去改b的column names) [程式範例]: library(data.table) a=data.table(rr=1) b=a setnames(b,"rr","tt") print(b) print(a) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.22.225 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1398221081.A.778.html

04/23 15:23, , 1F
names(b)<-c("rr","tt")
04/23 15:23, 1F

04/23 15:31, , 2F
names(b) 沒有問題,但是在data.table大的時候會很慢
04/23 15:31, 2F

04/23 15:32, , 3F
如果去讀data.table的說明文件他會建議你一律用setnames
04/23 15:32, 3F

04/23 15:32, , 4F
去處理。 不過現在碰到這個問題就很尷尬..
04/23 15:32, 4F

04/23 15:39, , 5F
sorry. 自己找到解答了,是因為data.table為COW的方式
04/23 15:39, 5F

04/23 15:40, , 6F
(copy on write) 所以用b=copy(a) 強制複製就可以了
04/23 15:40, 6F
文章代碼(AID): #1JLoaPTu (R_Language)
文章代碼(AID): #1JLoaPTu (R_Language)