按名称从数据框中删除列

Blu*_*ter 5 r dataframe

可能重复:
从R中的data.frame中删除整个列

是否有更好的方法从数据框中按名称删除列而不是以下?

Orange[colnames(Orange) != "Age"]
Run Code Online (Sandbox Code Playgroud)

我尝试过以下操作并收到错误:

> 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
Run Code Online (Sandbox Code Playgroud)

Cha*_*ase 5

您可以将列设置为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
Run Code Online (Sandbox Code Playgroud)

有人会出现并指出data.frame将制作大量数据副本来完成这项简单的任务.当数据变大(数百万行)时,这将花费大量时间,并且由于内存限制可能无法工作.如果这将是一个问题,请使用data.table:=运营商:

library(data.table)
> dt <- data.table(a = 1, b = 1, c = 1)
> dt[,a:=NULL]
     b c
[1,] 1 1
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 3

尝试:

Orange[-match("age",names(Orange))]
   Tree circumference
1     1            30
2     1            58
3     1            87
4     1           115
...
Run Code Online (Sandbox Code Playgroud)