【发布时间】:2012-10-03 19:56:11
【问题描述】:
假设我有一个包含 c1、c2、c3 列的数据框。
我只想列出 c1 和 c2。我该怎么做?
我试过了:
head(data[column!="c3"])
head(data)[,2]
head(data[!"c3"])
【问题讨论】:
假设我有一个包含 c1、c2、c3 列的数据框。
我只想列出 c1 和 c2。我该怎么做?
我试过了:
head(data[column!="c3"])
head(data)[,2]
head(data[!"c3"])
【问题讨论】:
如果您要按名称查找负索引(除了 tcash21's numeric indexing),我知道以下几种方法,其中一些方法比其他方法风险更大:
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")]
因为我觉得它安全高效。
【讨论】:
您可以索引并使用负号删除第 3 列:
data[,-3]
或者您可以只列出前 2 列:
data[,c("c1", "c2")]
data[,1:2]
不要忘记逗号和引用数据框的工作方式如下:data[row,column]
【讨论】:
x[1,2] = x[[2]][[1]]