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

myt*_*mer 42 r dataframe

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

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

我想列出c1和c2.我怎么做?

我试过了:

head(data[column!="c3"])
head(data)[,2]
head(data[!"c3"])
Run Code Online (Sandbox Code Playgroud)

Tyl*_*ker 98

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

一般我用:

mtcars[, !names(mtcars) %in% c("carb", "mpg")] 
Run Code Online (Sandbox Code Playgroud)

因为我觉得它安全有效.

  • 并请参阅 http://markmail.org/message/sdg7mopk4towqbm4 以了解 Brian Ripley 对 mtcars[,-c("carb","mpg")] 的评论 (2认同)

tca*_*h21 65

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

data[,-3]
Run Code Online (Sandbox Code Playgroud)

或者您只能列出前两列:

data[,c("c1", "c2")]
data[,1:2]
Run Code Online (Sandbox Code Playgroud)

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

  • 例如 `x[1,2]` = `x[[2]][[1]]` (2认同)