Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GREP:在字符串列表中查找两个单词共存的位置_R - Fatal编程技术网

GREP:在字符串列表中查找两个单词共存的位置

GREP:在字符串列表中查找两个单词共存的位置,r,R,鉴于以下列表: list <- c("Horse Cat - Dog - Snake/Cow", "Monkey Chicken - Horse - Donkey/Cow", "Fish Rat - Tortoise - Worm/Bird", "Bat Lizard - Ox - Snake/Cow", "Dog Cat - Horse - Snake/Cow") list您可以尝试使用regex实现这一点,这似乎很有效 grepl("Horse.*?Cow|Co

鉴于以下列表:

list <- c("Horse Cat - Dog - Snake/Cow", "Monkey  Chicken - Horse - Donkey/Cow", "Fish Rat - Tortoise - Worm/Bird", "Bat Lizard - Ox - Snake/Cow",
          "Dog Cat - Horse - Snake/Cow")

list您可以尝试使用regex实现这一点,这似乎很有效

grepl("Horse.*?Cow|Cow.*?Horse", list)
## [1]  TRUE  TRUE FALSE FALSE  TRUE
如果要忽略案例,可以添加
ignore.case=TRUE

顺便说一句,如果你想知道位置,最好使用
grep
,如中所示

grep("Horse.*?Cow|Cow.*?Horse", list)
## [1] 1 2 5

最简单的方法就是使用两个
grepl
并与
&

R> grepl("Horse", list) & grepl("Cow", list)
[1]  TRUE  TRUE FALSE FALSE  TRUE

R> grepl("Horse", list)
[1]  TRUE  TRUE FALSE FALSE  TRUE
R> grepl("Cow", list)
[1]  TRUE  TRUE FALSE  TRUE  TRUE

或者,您可以使用单个
grepl
命令:

grepl("Cow.*Horse|Horse.*Cow", list)

要返回逻辑向量,可以使用:

grepl("Horse", list) & grepl("Cow", list)
要返回索引,请将上述语句包装在另一种可能性中:

grepl("^(?=.*\\bHorse\\b)(?=.*\\bCow\\b)", list, perl=TRUE) 
## [1]  TRUE  TRUE FALSE FALSE  TRUE
尽管:

grepl("^(?=.*\\bhorse\\b)(?=.*\\bcow\\b)", list, ignore.case=TRUE, perl=TRUE) 

当情况不同时,可能更有用。

可能与
外部有关
grepl(“Horse”,list)&grepl(“Cow”,list)
或者根据您的应用程序更加灵活:
pattern=c(“Horse”,“Cow”)
Reduce(`&`,lappy(pattern,grepl,list))