使用grep来解析列名

时间:2014-12-16 11:38:54

标签: r grep

有一个数据框,我想从中删除colname中有字符串XFLXST的所有列。 colname不仅仅是XFL,还可以是ktel_XFLktel_XST。我知道必须有一些方法可以用grep吗?

3 个答案:

答案 0 :(得分:2)

你可以试试这个:

df <- df[, !grepl("XFL|XST", names(df)), drop = FALSE]

由于问题中没有可重复的示例,您可以使用虹膜数据集进行检查:

data(iris)
# delete any column that contains "Sepal" or "Petal":
iris[, !grepl("Sepal|Petal", names(iris)), drop = FALSE]
#       Species
#1       setosa
#2       setosa
#3       setosa
#4       setosa
#5       setosa
#...

答案 1 :(得分:2)

这是一种方法:

# create a cloumn index
idx <- grep("X(FL|ST)", colnames(dat), invert = TRUE)
# filter columns
dat[idx]

其中dat是数据框的名称。

答案 2 :(得分:0)

另一个通过否定先行断言。

df[grep("^(?!.*X(FL|ST)).*", colnames(df), perl=T)]