2015-02-06 146 views
1

如何在另一个字符串中查找字符串的一部分。下面你可以找到一些示例数据:在另一个字符串中查找字符串的一部分

a <- c("23,45,24,67,91,10") 
b <- c("as.01,as.23,as55,as69") 

的目标是找到a任何子在b。因此,这应该返回TRUE,因为23出现在ab中。我已经尝试过功能,如

charmatch 
grepl 
match 

但所有这些似乎不符合我的目的。任何帮助表示赞赏!

+3

如果一切'了'和'B'只是一个字符串,你不需要使用'C' ... – 2015-02-06 13:26:17

回答

5

有可能是你输入的错误和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

或者如果输入没有错误,只是做一个'< - strsplit(a,“,”)[[1]]'在......之前...... – Cath 2015-02-06 13:12:38

+0

这不是我需要@博维上校。我需要一个函数,我有两个大字符串,'a'的一个子元素应该在'b'中。因此,我没有像<-c(“23”,“45”,...)而不是< - c(“23,45,...”)的数据 – 2015-02-06 13:16:08

+1

谢谢@CathG这就是我那么需要。然后博维尔的答案 – 2015-02-06 13:19:01

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 
+1

非常好的一个! :-) – Cath 2015-02-06 13:24:57

+2

超好看,我正在寻找一些矢量化,你明白了! – 2015-02-06 13:29:00

相关问题