如何在數(shù)據(jù)框中按名稱刪除列我有一個(gè)大型數(shù)據(jù)集,我想閱讀特定列或刪除所有其他列。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貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
不要用-which()它,這是非常危險(xiǎn)的。考慮:
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...
而是使用子集或!函數(shù):
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
我從痛苦的經(jīng)歷中學(xué)到了這一點(diǎn)。不要過度使用which()!
- 3 回答
- 0 關(guān)注
- 2734 瀏覽
添加回答
舉報(bào)
0/150
提交
取消