假设我有一个包含c1,c2,c3列的数据框。
我想列出c1和c2。我该怎么做?
我试过了:
head(data[column!="c3"])
head(data)[,2]
head(data[!"c3"])
答案 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]