在另一个字符串中查找字符串的一部分
如何在另一个字符串中查找字符串的一部分。下面你可以找到一些示例数据:在另一个字符串中查找字符串的一部分
a <- c("23,45,24,67,91,10")
b <- c("as.01,as.23,as55,as69")
的目标是找到a
任何子在b
。因此,这应该返回TRUE,因为23出现在a
和b
中。我已经尝试过功能,如
charmatch
grepl
match
但所有这些似乎不符合我的目的。任何帮助表示赞赏!
有可能是你输入的错误和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
或者如果输入没有错误,只是做一个' Cath 2015-02-06 13:12:38
这不是我需要@博维上校。我需要一个函数,我有两个大字符串,'a'的一个子元素应该在'b'中。因此,我没有像 2015-02-06 13:16:08
谢谢@CathG这就是我那么需要。然后博维尔的答案 – 2015-02-06 13:19:01
你可以避免使用*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
非常好的一个! :-) – Cath 2015-02-06 13:24:57
超好看,我正在寻找一些矢量化,你明白了! – 2015-02-06 13:29:00
如果一切'了'和'B'只是一个字符串,你不需要使用'C' ... – 2015-02-06 13:26:17