看板 R_Language 關於我們 聯絡資訊
前文恕刪 : 1. 要有column name : 2. 本身要先有結構, 不能從 Null table 開始bind : 3. 真的一次只能bind 1個column? 不然要用merge? : 4. 同樣的範例改成rbind, 好像又是整個不同的概念? : 現在我看data.table的方式就是把他當sql操作, : 如果在sql上很難寫的, data.table就難以想像了 temp1 = 1:10 temp2 = matrix(1:25, 5) out1 = data.table(x = rep(NA,length(temp1))) out2 = data.table(x = rep(NA,dim(temp2)[1])) colname1 = paste0("x", 1:10) colname2 = paste0("y", 1:250) for(i in 1:10){ out1 = out1[, colname1[i]:= temp1] colnames(temp2) = colname2[(5*(i-1)+1):(5*i)] out2 = data.table(out2, temp2) #out2 = data.table(out2, temp2) another approach but I don't like #names(out2)[ (5*(i-1)+1):(5*i) + 1] = colname2[(5*(i-1)+1):(5*i)] } out1 = out1[, x := NULL] out2 = out2[, x := NULL] 不知道是否要這樣做? 另外補充一件事XD 他的記憶體吃的比data.frame大 不知道在大資料下 會不會記憶體容易不夠 因為同樣是out2 如果格式data.frame只要7368 bytes 但是格式data.table 要10512 bytes -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.239.247.133 ※ 編輯: celestialgod 來自: 36.239.247.133 (06/29 23:28)
memphis:感謝你的嘗試, 所以點出了兩點 06/30 00:00
memphis:1. 無論是out1或out2, 要先設定長度 06/30 00:03
memphis:2. out1可以看到有by reference, 可是out2我就不知道了 06/30 00:04
memphis:而且合併資料, 要先把colname處理好 06/30 00:08
Wush978:out2沒有by reference, 可以用tracemem檢查 06/30 00:49