列出除R中的一列之外的所有列

时间:2012-10-12 23:50:02

标签: r dataframe

  

可能重复:
  Drop Columns R Data frame

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

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

我试过了:

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

2 个答案:

答案 0 :(得分:88)

除了tcash21的数字索引,如果OP可能一直在寻找名称的负索引。以下是我所知道的一些方法,其中一些方法比其他方式有用:

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")] 

因为我觉得它安全有效。

答案 1 :(得分:58)

您只需索引并使用负号删除该列:

data[,-3]

或者您只能列出前两列:

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

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