1. ホーム
  2. r

[解決済み] data.tableから複数のカラムを削除する

2023-06-20 22:38:50

質問

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"

どのように解決するのですか?

これは確かな再現性のあるバグのように見えます。 これは バグ #2791 .

カラムを繰り返すと、後続のカラムが削除されようとするようです。

列が残らない場合、Rはクラッシュします。


アップデイト : v1.8.11で修正されました。より ニュース :

<ブロッククオート

例えば DT[,c("B","B"):=NULL] (同じ列を 2 回参照して削除) などです。Ricardo に感謝します ( #2751 ) と matt_k ( #2791 ) を報告用に追加しました。テストを追加しました。