Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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
grepl在两个向量上逐个元素_R_Grepl - Fatal编程技术网

grepl在两个向量上逐个元素

grepl在两个向量上逐个元素,r,grepl,R,Grepl,我想对两个向量应用grepl,看看第一个向量的元素在第二个向量的对应元素中是否可用。比如说 grepl(c("bc","23","a2"),c("abcd","1234","zzzz")) 由于bc在abcd中,23在1234中,a2不在zzzz中,我想得到TRUE-FALSE。但是,我得到的是: [1] TRUE FALSE FALSE Warning message: In grepl(c("bc", "23", "a2"), c("abcd", "1234", "zzzz")) : a

我想对两个向量应用
grepl
,看看第一个向量的元素在第二个向量的对应元素中是否可用。比如说

grepl(c("bc","23","a2"),c("abcd","1234","zzzz"))
由于
bc
abcd
中,
23
1234
中,
a2
不在
zzzz
中,我想得到
TRUE-FALSE
。但是,我得到的是:

[1]  TRUE FALSE FALSE
Warning message:
In grepl(c("bc", "23", "a2"), c("abcd", "1234", "zzzz")) :
argument 'pattern' has length > 1 and only the first element will be used 
试试or操作符

grepl(c("bc|23|a2"),c("abcd","1234","zzzz"))

我们可以在此处尝试使用
mapply

fun <- function(x, y) {
    grepl(x, y)
}

mapply(fun, c("bc","23","a2"), c("abcd","1234","zzzz"))

  bc    23    a2 
TRUE  TRUE FALSE 

fun
stringr
软件包(依赖于
stringi
)提供自然矢量化的
regex
功能:

require(stringr)
str_detect(string=c("abcd","1234","zzzz"),pattern=c("bc","23","a2"))
#[1]  TRUE  TRUE FALSE

请注意,
grep

的参数顺序不同,我们也可以使用
purr

purrr::map2(c("bc","23","a2"),c("abcd","1234","zzzz"),
            function(x,y) grepl(x,y))
[[1]]
[1] TRUE

[[2]]
[1] TRUE

[[3]]
[1] FALSE
如果您想留在
基地

   unlist(Map(function(x,y) grepl(x,y), my_list[[1]],my_list[[2]]))
   bc    23    a2 
 TRUE  TRUE FALSE 

或者您可以使用原始包(我认为这里不需要regex)
stringi::stri_detect_fixed(c(“abcd”、“1234”、“zzzz”)、c(“bc”、“23”、“a2”)
无需事先定义函数
mappy(grepl、c(“bc”、“23”、“a2”)、c(“abcd”、“1234”、“zzzz”))
也可以使用