7

data.table に新しい列を作成し、同時に既存の列を更新することはできますか? 以下はうまくいきませんでした。ありがとう。

library(data.table)
dt <- data.table(x=runif(4), y=runif(4), z=c("x","x","y","y"))
dt[, c("x", "y") := list(x[1], y[1]), by=z]     # works
dt[, c("x", "newx") := list(x[1], y[1]), by=z]

キャッチされたセグメンテーション:

address 0x20000010, cause 'memory not mapped'

トレースバック:

 1: [.data.table(dt, , :=(c("x", "newx"), list(x[1], y[1])), by = z)
 2: dt[, :=(c("x", "newx"), list(x[1], y[1])), by = z]
4

1 に答える 1

5

はい。ただし、次の修正を取得するには、R-Forge の v1.8.9 が必要です。

o 1 つの DT[, :=(existingCol=...,newCol=...), by=...] への追加と更新の混合が、エラーやセグメンテーション違反なしで機能するようになりました (#2778 および #2528)。Arunkumar Srinivasan の報告と、再現可能な素晴らしい例に感謝します。テストが追加されました。

v1.8.9 でのその他の変更点については、最新の NEWS (更新されたライブ) を参照してください。

于 2013-08-29T22:51:23.820 に答える