!grep多个模式R

时间:2018-01-21 23:14:57

标签: r grep

我有一个df:

label.disabled, label[disabled] {
  opacity: .4;
}

我想通过NOT匹配C列中的多个模式来对此df进行子集化。 (我知道它更容易匹配,但我需要找到一种不匹配的方法)。 我试过了:

A <- c(10,14,45,3687)
B <- c(354,587,45,6787)
C <- c("I","J","K","L")

df <- data.frame(A,B,C)

但R说: &#39;操作仅适用于数字,逻辑或复杂类型&#39;

2 个答案:

答案 0 :(得分:0)

你不应该连接..尝试以下

df[!grepl("K|L", df$C),]
   A   B C
1 10 354 I
2 14 587 J

答案 1 :(得分:0)

能够将此应用于您不想匹配的任意数量的模式,使用

定义您不希望在矢量中匹配的模式
rem_pat <- c("K","L")

然后&#34; |&#34; - 使用带

的粘贴在子集命令中将其折叠
(no_K_L <- df[!grepl(paste(rem_pat, collapse = "|"), df$C),])
   A   B C
1 10 354 I
2 14 587 J