根据名称中的模式删除列

时间:2018-08-22 20:17:57

标签: r

我有一个像这样的数据框:

colnames(df) <- c("A",  "B",  "C",  "MO_A",   "MO_B",   "D",   "F",  "MO_D")

现在我要删除所有以“ MO_”开头的列

最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以这样做:

for(n in colnames(df)) {
if(grepl("MO_", n)) df[[n]] <- NULL
}

答案 1 :(得分:0)

使用regex获取感兴趣的列,然后使用负索引对数据框建立索引以将其删除。

具有逻辑索引:

df <- df[, !grepl('MO_', colnames(df))]

带有数字索引:

df <- df[, -grep('MO_', colnames(df))]