我有一个列名称向量如下:
colsToRemove <- c("CHF", "CAD", "Sex", "Admissions")
我还有一个包含700多列的大型数据框。我想删除名称出现在上面的列名称向量中的列。
我一直在使用一个简单的循环。它在某种程度上起作用,但在没有匹配时出错。偶尔会发生这种情况,原因是变量被转换和重命名。我很好奇是否有更有效的方法来执行此操作,可能使用其中一个应用函数?有没有办法阻止它在遇到不匹配的值时停止?
目前的解决方案:
col_ind <- vector()
for (i in 1:(length(colsToRemove)) {
col_ind[i] <- grep(colsToRemove[i], colnames(myDF))
}
myDF <- myDF[,-colsToRemove]
提前致谢。
答案 0 :(得分:3)
Leg
如果您需要删除(regex-)匹配colsToRemove内容的所有列:
myDF[, !colnames(myDF) %in% colsToRemove]
答案 1 :(得分:2)
您也可以使用match()
cols <- c("CHF", "CAD", "Sex", "Admissions")
df <- data.frame(CHF=1, CAD=2, Sex=3, X=5, Admissions=6)
# CHF CAD Sex X Admissions
#1 1 2 3 5 6
df[,match(cols, names(df))] <- NULL
# X
#1 5