如何在数据框中按名称删除列我有一个大型数据集,我想阅读特定列或删除所有其他列。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()!
- 3 回答
- 0 关注
- 2705 浏览
添加回答
举报
0/150
提交
取消