如何在另一个字符串中找到字符串的一部分。您可以在下面找到一些示例数据:
a <- c("23,45,24,67,91,10")
b <- c("as.01,as.23,as55,as69")
目标是在a
中找到b
的任何子字符串。因此,这应该返回TRUE,因为a
和b
中存在23。我已经尝试了诸如
charmatch
grepl
match
但所有这些似乎都不符合我的目的。任何帮助表示赞赏!
答案 0 :(得分:5)
输入a和b中可能存在错误:
a <- c("23","45","24","67","91","10")
b <- c("as.01","as.23","as55","as69")
> any(sapply(a, grepl, x=b))
[1] TRUE
或仅在您的输入中:
a <- c("23","45","24","67","91","10")
b <- c("as.01,as.23,as55,as69")
> any(sapply(a, grepl, x=b))
[1] TRUE
或者如果没有错误:
> any(sapply(strsplit(a,',')[[1]], grepl, x=b))
[1] TRUE
答案 1 :(得分:5)
您可以使用*apply
来避免gsub
循环并对其进行矢量化,以便将,
替换为|
并将其转换为有效的正则表达式。
grepl(gsub(",", "|", a, fixed = TRUE), b)
## [1] TRUE
这样,您也不需要使用any
,因为即使您有多个匹配项,它也只会返回一个TRUE
。
a <- "23,45,55,67,91,10"
b <- "as.01,as.23,as55,as69"
grepl(gsub(",", "|", a, fixed = TRUE), b)
## [1] TRUE