Re: [問題] [data.table] cbind

看板R_Language作者 (攸藍)時間11年前 (2013/06/29 23:27), 編輯推噓3(302)
留言5則, 2人參與, 最新討論串2/3 (看更多)
前文恕刪 : 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)

06/30 00:00, , 1F
感謝你的嘗試, 所以點出了兩點
06/30 00:00, 1F

06/30 00:03, , 2F
1. 無論是out1或out2, 要先設定長度
06/30 00:03, 2F

06/30 00:04, , 3F
2. out1可以看到有by reference, 可是out2我就不知道了
06/30 00:04, 3F

06/30 00:08, , 4F
而且合併資料, 要先把colname處理好
06/30 00:08, 4F

06/30 00:49, , 5F
out2沒有by reference, 可以用tracemem檢查
06/30 00:49, 5F
文章代碼(AID): #1HplpsGk (R_Language)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1HplpsGk (R_Language)