R grep特殊字符存储在变量中
R grep special characters stored in variable
假设我有一个字符向量 a
如下所示:
a <- c(paste("P",1:5,"AA+1","a",8:12), paste("P",6:8,"BA-2","a",25:27), paste("P",9:16,"ZZ*3","a",25:32), paste("P",17:20,"CD/4","a",4:7), paste("P",21:24,"XY&9","a",112:113))
> a
[1] "P 1 AA+1 a 8" "P 2 AA+1 a 9" "P 3 AA+1 a 10" "P 4 AA+1 a 11"
[5] "P 5 AA+1 a 12" "P 6 BA-2 a 25" "P 7 BA-2 a 26" "P 8 BA-2 a 27"
[9] "P 9 ZZ*3 a 25" "P 10 ZZ*3 a 26" "P 11 ZZ*3 a 27" "P 12 ZZ*3 a 28"
[13] "P 13 ZZ*3 a 29" "P 14 ZZ*3 a 30" "P 15 ZZ*3 a 31" "P 16 ZZ*3 a 32"
[17] "P 17 CD/4 a 4" "P 18 CD/4 a 5" "P 19 CD/4 a 6" "P 20 CD/4 a 7"
[21] "P 21 XY&9 a 112" "P 22 XY&9 a 113" "P 23 XY&9 a 112" "P 24 XY&9 a 113"
我需要检测存储在另一个字符向量 gs
中的 3 个组内的元素,通过 grep
:
gs <- c("AA+1","ZZ*3","XY&9")
如您所见,问题在于这些组包含特殊字符。
我知道我能做到:
grep("AA\+1", a, val=TRUE)
但是当我想要 grep
的内容在向量中时呢?我做不到:
grep(gs[1], a, val=TRUE)
character(0)
只是为了提供一些背景信息并解决此案:
选项fixed=TRUE
定义模式是一个要按原样(字面意思)匹配的字符串,而不是正则表达式。该选项还覆盖所有冲突参数 (doc).
fixed=TRUE
并不意味着它像 bash 中的 grep -w
那样工作,它会找到一个字符串,该字符串是一个单独的单词(由 space/boundries 括起来).该字符串仍然可以是源 text/character 向量中单词的子字符串。
假设我有一个字符向量 a
如下所示:
a <- c(paste("P",1:5,"AA+1","a",8:12), paste("P",6:8,"BA-2","a",25:27), paste("P",9:16,"ZZ*3","a",25:32), paste("P",17:20,"CD/4","a",4:7), paste("P",21:24,"XY&9","a",112:113))
> a
[1] "P 1 AA+1 a 8" "P 2 AA+1 a 9" "P 3 AA+1 a 10" "P 4 AA+1 a 11"
[5] "P 5 AA+1 a 12" "P 6 BA-2 a 25" "P 7 BA-2 a 26" "P 8 BA-2 a 27"
[9] "P 9 ZZ*3 a 25" "P 10 ZZ*3 a 26" "P 11 ZZ*3 a 27" "P 12 ZZ*3 a 28"
[13] "P 13 ZZ*3 a 29" "P 14 ZZ*3 a 30" "P 15 ZZ*3 a 31" "P 16 ZZ*3 a 32"
[17] "P 17 CD/4 a 4" "P 18 CD/4 a 5" "P 19 CD/4 a 6" "P 20 CD/4 a 7"
[21] "P 21 XY&9 a 112" "P 22 XY&9 a 113" "P 23 XY&9 a 112" "P 24 XY&9 a 113"
我需要检测存储在另一个字符向量 gs
中的 3 个组内的元素,通过 grep
:
gs <- c("AA+1","ZZ*3","XY&9")
如您所见,问题在于这些组包含特殊字符。
我知道我能做到:
grep("AA\+1", a, val=TRUE)
但是当我想要 grep
的内容在向量中时呢?我做不到:
grep(gs[1], a, val=TRUE)
character(0)
只是为了提供一些背景信息并解决此案:
选项
fixed=TRUE
定义模式是一个要按原样(字面意思)匹配的字符串,而不是正则表达式。该选项还覆盖所有冲突参数 (doc).fixed=TRUE
并不意味着它像 bash 中的grep -w
那样工作,它会找到一个字符串,该字符串是一个单独的单词(由 space/boundries 括起来).该字符串仍然可以是源 text/character 向量中单词的子字符串。