我有一个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