按名称从数据帧中删除列
问题描述:
可能重复:
remove an entire column from a data.frame in R按名称从数据帧中删除列
是否有更好的方式,通过名字从比下面的数据帧中删除列?
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
答
尝试:
Orange[-match("age",names(Orange))]
Tree circumference
1 1 30
2 1 58
3 1 87
4 1 115
...
答
您可以设置列设置为空
> 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
+0
您能否将您的答案添加到我链接的问题中,以便质量答案不会分散在多个问题中? – 2012-07-19 16:44:23
还有一个更简单的方法,将其设置为NULL,但它是在重复的问题(见上文)讨论。 – 2012-07-19 16:24:11