有一个数据框,我想从中删除colname中有字符串XFL
或XST
的所有列。 colname不仅仅是XFL
,还可以是ktel_XFL
或ktel_XST
。我知道必须有一些方法可以用grep
吗?
答案 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)]