2013-07-24 31 views
0

我有含30個左右的列的合理大小的data.table麻煩:(請注意,我使用以下僞值)řdata.table rbindlist

使用rbindlist(list(dat, dat2))以添加新data.table具有相同的字段與另一50000行產生不正確的新主數據表。

是否有一個簡單而快速的解決方案,將新行添加到列字段都匹配的data.table中?

爲了簡化,我創建了一個虛擬數據集。使用rbind(dat,dat2)輸出重複的數據2。 (預計應該是總共15行)

我閱讀論壇以獲得更好的解決方案,並且想出了一些與rbindlist一樣的東西,但是看起來並不像它的伎倆。相同的輸出作爲rbind

是否有一個快速的解決方案,將dat2綁定到dat沒有重複?

輸出rbind和rbindlist

id mpg cyl disp factor hp 
1: a 22 8 300 FALSE 20 
2: b 20 8 300 TRUE 20 
3: c 20 8 160 FALSE 20 
4: d 20 4 300 TRUE 22 
5: e 22 4 160 FALSE 22 
6: f 22 4 160 TRUE 22 
7: g 20 8 160 FALSE 20 
8: h 22 4 300 FALSE 20 
9: i 22 4 160 FALSE 20 
10: j 22 8 160 TRUE 22 
11: k 22 8 160 FALSE 20 
12: l 22 8 160 TRUE 20 
13: m 20 8 300 TRUE 20 
14: n 22 4 300 FALSE 20 
15: o 20 8 160 FALSE 20 
16: k 22 8 160 FALSE 20 
17: l 22 8 160 FALSE 20 
18: m 20 8 300 FALSE 20 
19: n 22 4 300 TRUE 20 
20: o 20 8 160 TRUE 20 
+0

[how-to-make-a-great-r-reproducible-example](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – eddi

+1

你好。如果你能解釋你所看到的,你期望看到的,等等,這將是有幫助的。 –

+1

我不明白你爲什麼不使用'rbind(dat,dat2)'。 – Roland

回答

3

嘗試使用unique

unique(rbind(dat1, dat2)) 
+0

感謝里卡多,這就實現了。 – digdeep

1

您的問題是創建newTable.df當你有下面這行:

factor = sample(c(TRUE, FALSE), 10, replace = TRUE) 

這將導致結果表格有10行(而不是5個)意)。將此10更改爲5後,dat2 data.table將包含5行,而rbind(dat, dat2)將包含15行。

相關問題