84

data.tableから複数の列を削除する正しい方法は何ですか? 現在、以下のコードを使用していますが、列名の 1 つを誤って繰り返したときに予期しない動作が発生していました。これがバグなのか、それともこの方法で列を削除すべきではないのか、私にはわかりませんでした。

library(data.table)
DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","y") := NULL]
names(DT)
[1] "z"

上記は問題なく動作しますが、

DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","x") := NULL]
names(DT)
[1] "z"
4

2 に答える 2

39

これは、確実で再現可能なバグのように見えます。Bug #2791として提出されています。

列を繰り返すと、後続の列が削除されるようです。
列が残っていない場合、R はクラッシュします。


更新: v1.8.11 で修正されました。NEWSより

状況によっては、同じクエリで同じ列に 2 回割り当てると、クラッシュではなくエラーになります。例: DT[,c("B","B"):=NULL] (同じ列を 2 回参照して削除)。報告してくれた Ricardo ( #2751 ) と matt_k ( #2791 ) に感謝します。テストが追加されました。

于 2013-05-19T20:07:45.650 に答える