排除 R 中仅具有特定模式的所有行

Exclude all rows with JUST specific patterns in R

我想排除 df 中只有特定模式(AAABBB)的所有行。我的真实数据有超过 20k 行和超过 2k 列!遵循代表性输入示例:

df <- "chr   position sample21s  sample23s sample22s
    chr2    150      AB           BB       AA       
    chr4    250      A            AA       BB
    chr5    350      AB           B        BB   
    chr7    550      AA           AA       AA
    chr8    650      BB           BB       AB"
df <- read.table(text=df, header=T)

预期输出:

chr   position sample21s  sample23s sample22s
chr4    250      A            AA       BB
chr5    350      AB           B        BB   

有什么想法吗?

这是另一种选择...

> ind <- apply(df[, grepl("^sample", names(df))], 1,
              function(x) sum(x %in% c("AA", "AB", "BB"))!=3)

> df[ind, ]
   chr position sample21s sample23s sample22s
2 chr4      250         A        AA        BB
3 chr5      350        AB         B        BB