为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

波斯汪 2019-08-06 13:15:11
如何在数据框中按名称删除列我有一个大型数据集,我想阅读特定列或删除所有其他列。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}删除所有不需要的列。这是最佳解决方案吗?
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

不要用-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 expected

dat[ , -which(names(dat) %in% c("foo","bar"))] ## deletes all columns! Probably not what you wanted...

而是使用子集或!函数:


dat[ , !names(dat) %in% c("z","u")] ## works as expected

dat[ , !names(dat) %in% c("foo","bar")] ## returns the un-altered data.frame. Probably what you want

我从痛苦的经历中学到了这一点。不要过度使用which()!


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 2705 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信