6

重複の可能性:
R の data.frame から列全体を削除する

以下よりもデータフレームから名前で列を削除するより良い方法はありますか?

Orange[colnames(Orange) != "Age"]

次のことを試しましたが、エラーが発生しました。

> Orange[-"Age"]
Error in -"age" : invalid argument to unary operator
> Orange[,-"Age"]
Error in -"age" : invalid argument to unary operator
> Orange[[,-"Age"]]
Error in -"age" : invalid argument to unary operator
4

2 に答える 2

6

列をNULLに設定できます

> dat <- data.frame(a = 1, b = 1, c = 1)
> dat
  a b c
1 1 1 1
> dat$a <- NULL
> dat
  b c
1 1 1
> dat["b"] <- NULL
> dat
  c
1 1

data.frame誰かがやって来て、この単純なタスクを実行するためにデータのコピーを大量に作成すると指摘するでしょう。データが大きくなると (数百万行)、これには多くの時間がかかり、メモリの制約により機能しない場合があります。それが問題になる場合は、次data.table:=演算子を使用します。

library(data.table)
> dt <- data.table(a = 1, b = 1, c = 1)
> dt[,a:=NULL]
     b c
[1,] 1 1
于 2012-07-19T16:22:34.973 に答える