作者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)
1F:推 memphis:感谢你的尝试, 所以点出了两点 06/30 00:00
2F:→ memphis:1. 无论是out1或out2, 要先设定长度 06/30 00:03
3F:→ memphis:2. out1可以看到有by reference, 可是out2我就不知道了 06/30 00:04
4F:推 memphis:而且合并资料, 要先把colname处理好 06/30 00:08
5F:推 Wush978:out2没有by reference, 可以用tracemem检查 06/30 00:49