我想從一個data.table聚合一個數據來創建一個新的列,這是一個前面的行列表。它更容易通過例子來看看:data.table聚合列表列
dt <- data.table(id = c(1,1,1,1,2,2,3,3,3), letter = c('a','a','b','c','a','c','b','b','a'))
我想在這樣的方式,其結果應該是
id letter
1: 1 a,a,b,c
2: 2 a,c
3: 3 b,b,a
憑直覺我試圖
dt[,j = list(list(letter)), by = id]
聚合這一點,但說沒有按」工作。奇怪的是,當我的話,請情況下,例如:
> dt[id == 1,j = list(list(letter)), by = id]
id V1
1: 1 a,a,b,c
結果是好的......我覺得我缺少一個.SD
某處或類似的東西...
任何人可以點我在正確的方向?
謝謝!
upvoted,打我吧..儘管這不會返回變量名稱「letter」 –
這個問題是因爲'list(。)'在R3.1.0中淺拷貝。將在下一個版本中修復。 – Arun
很想知道原因。謝謝Arun。我發現了另一種使用'.SD'的方法,但它的工作原理是一樣的。我沒有對運行時間進行基準測試,看看哪個更好。 – MagicScout