如何在数据框中按名称删除列

如何在数据框中按名称删除列

我有一个大型数据集,我想阅读特定列或删除所有其他列。

data <- read.dta("file.dta")

我选择了我不感兴趣的列:

var.out <- names(data)[!names(data) %in% c("iden", "name", "x_serv", "m_serv")]

而且我想做的事情如下:

for(i in 1:length(var.out)) {
   paste("data$", var.out[i], sep="") <- NULL}

删除所有不需要的列。这是最佳解决方案吗?


波斯汪
浏览 2712回答 3
3回答

qq_笑_17

不要用-which()它,这是非常危险的。考虑:dat <- data.frame(x=1:5, y=2:6, z=3:7, u=4:8)dat[ , -which(names(dat) %in% c("z","u"))] ## works as expecteddat[ , -which(names(dat) %in% c("foo","bar"))] ## deletes all columns! Probably not what you wanted...而是使用子集或!函数:dat[ , !names(dat) %in% c("z","u")] ## works as expecteddat[ , !names(dat) %in% c("foo","bar")] ## returns the un-altered data.frame. Probably what you want我从痛苦的经历中学到了这一点。不要过度使用which()!
打开App,查看更多内容
随时随地看视频慕课网APP