问题

我有一些列,我想从数据框中删除.我知道我们可以使用类似的方法单独删除它们:

df$x <- NULL

但我希望用更少的命令这样做.

此外,我知道,我可以删除列使用整数索引,如下:

df <- df[ -c(1, 3:6, 12) ]

但我担心我的变量的相对位置可能会改变.

考虑到R有多么强大,我想有一个更好的方法,而不是逐个删除每一列.



解决方法

您可以使用简单的名称列表:

DF <- data.frame(
  x=1:10,
  y=10:1,
  z=rep(5,10),
  a=11:20
)
drops <- c("x","z")
DF[ , !(names(DF) %in% drops)]

或者,您也可以列出要保留的列表,并按名称引用:

keeps <- c("y", "a")
DF[keeps]

编辑: 对于那些仍然不熟悉索引函数的 drop 参数的人,如果你想保留一列作为数据框,你可以:

keeps <- "y"
DF[ , keeps, drop = FALSE]

drop = TRUE (或者不提及它)会丢弃不必要的维度,因此返回一个具有列 y 的值的向量.




相关问题推荐