68

可能重复:
删除列 R 数据框

假设我有一个包含 c1、c2、c3 列的数据框。

我只想列出 c1 和 c2。我怎么做?

我试过了:

head(data[column!="c3"])
head(data)[,2]
head(data[!"c3"])
4

2 回答 2

141

如果您正在按名称查找负索引(除了tcash21 的数字索引),这里有一些我知道的方法,其中一些比其他方法风险更大:

mtcars[, -which(names(mtcars) == "carb")]  #only works on a single column
mtcars[, names(mtcars) != "carb"]          #only works on a single column
mtcars[, !names(mtcars) %in% c("carb", "mpg")] 
mtcars[, -match(c("carb", "mpg"), names(mtcars))] 
mtcars2 <- mtcars; mtcars2$hp <- NULL         #lost column (risky)


library(gdata) 
remove.vars(mtcars2, names=c("mpg", "carb"), info=TRUE) 

一般我使用:

mtcars[, !names(mtcars) %in% c("carb", "mpg")] 

因为我觉得它安全有效。

于 2012-10-13T00:07:38.657 回答
84

您可以索引并使用负号删除第 3 列:

data[,-3]

或者您可以只列出前 2 列:

data[,c("c1", "c2")]
data[,1:2]

不要忘记逗号和引用数据框的工作方式如下:data[row,column]

于 2012-10-12T23:53:32.153 回答