我有一個DT(data.table),其中包括3900萬行和兩列,例如cola
和colb
,我想添加一個名爲colc
的新列,它是DT[,
:= (colc = paste(cola, colb, sep="-"))
,但速度有點慢。R:加速合併(粘貼或粘貼0)操作爲3900萬行和兩列data.table
您是否有其他方法來加速此操作?
謝謝。
我有一個DT(data.table),其中包括3900萬行和兩列,例如cola
和colb
,我想添加一個名爲colc
的新列,它是DT[,
:= (colc = paste(cola, colb, sep="-"))
,但速度有點慢。R:加速合併(粘貼或粘貼0)操作爲3900萬行和兩列data.table
您是否有其他方法來加速此操作?
謝謝。
由於@Frank建議,使用by = 'cola,colb'
,我的原始問題可以通過這種方式解決,不需要添加額外的列。謝謝。
我想你可能會發現新的[HTML vignettes](https://github.com/Rdatatable/data.table/wiki/Getting-started)非常有用。 – Arun 2015-02-18 19:34:34
謝謝@阿倫。當然。將學習它。 – BioChemoinformatics 2015-02-18 19:48:39
多慢有點慢? (什麼速度,在什麼硬件上?)如果你已經非常滿意,我不會感到驚訝。你能平行嗎? – 2015-02-17 20:21:07
使用'DT [,':='(colc = paste0(cola,colb))',它在Linux平臺上花費了大約393秒。我不認爲它會並行。另外,如果我'加'操作DT [,':='(colc = cola + colb)',它很快(因爲可樂和colb是數字的),但是一些colc值會等同於do加操作,所以我考慮使用粘貼功能將它們放在一起,確保它們中的每一個都不同。 – BioChemoinformatics 2015-02-17 20:32:14
如果combos'(可樂,colb)'重複了很多,'by'語句應該加快速度。要檢查你有多少重複,你可以看看'DT [,。N,by ='cola,colb'] [,hist(N)]'(或者不是'hist'的任何摘要命令)。 – Frank 2015-02-17 20:43:21