作者celestialgod (攸藍)
看板R_Language
標題Re: [問題] [data.table] cbind
時間Sat Jun 29 23:27:48 2013
前文恕刪
: 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