提取两个字符串之间出现的所有不同字符
Extract all occurrences of characters that differ between two strings
我已经使用 adist
计算了两个字符串之间不同的字符数:
a <- "#IvoryCoast TENNIS US OPEN Clément «Un beau combat» entre Simon et Cilic"
b <- "Clément «Un beau combat» entre Simon et Cilic"
adist(a,b) # result 27
现在我想提取 所有出现 的不同字符。在我的示例中,我想获取字符串 "#IvoryCoast TENNIS US OPEN "
.
我尝试并使用过:
paste(Reduce(setdiff, strsplit(c(a, b), split = "")), collapse = "")
但是得到的结果不是我想要的!
#IvysTENOP
对于这种情况,您可以使用 gsub。
> a <- "#IvoryCoast TENNIS US OPEN Clément «Un beau combat» entre Simon et Cilic"
> b <- "Clément «Un beau combat» entre Simon et Cilic"
> gsub(b, "", a)
[1] "#IvoryCoast TENNIS US OPEN "
可以这样做,基于paste/reduce
解决方案:
paste(Reduce(setdiff, strsplit(c(a, b), split = " ")), collapse = " ")
#[1] "#IvoryCoast TENNIS US OPEN"
或者,如果您想要分开的项目,使用 setdiff
和 strsplit
:
setdiff(strsplit(a," ")[[1]],strsplit(b," ")[[1]])
#[1] "#IvoryCoast" "TENNIS" "US" "OPEN"
我已经使用 adist
计算了两个字符串之间不同的字符数:
a <- "#IvoryCoast TENNIS US OPEN Clément «Un beau combat» entre Simon et Cilic"
b <- "Clément «Un beau combat» entre Simon et Cilic"
adist(a,b) # result 27
现在我想提取 所有出现 的不同字符。在我的示例中,我想获取字符串 "#IvoryCoast TENNIS US OPEN "
.
我尝试并使用过:
paste(Reduce(setdiff, strsplit(c(a, b), split = "")), collapse = "")
但是得到的结果不是我想要的!
#IvysTENOP
对于这种情况,您可以使用 gsub。
> a <- "#IvoryCoast TENNIS US OPEN Clément «Un beau combat» entre Simon et Cilic"
> b <- "Clément «Un beau combat» entre Simon et Cilic"
> gsub(b, "", a)
[1] "#IvoryCoast TENNIS US OPEN "
可以这样做,基于paste/reduce
解决方案:
paste(Reduce(setdiff, strsplit(c(a, b), split = " ")), collapse = " ")
#[1] "#IvoryCoast TENNIS US OPEN"
或者,如果您想要分开的项目,使用 setdiff
和 strsplit
:
setdiff(strsplit(a," ")[[1]],strsplit(b," ")[[1]])
#[1] "#IvoryCoast" "TENNIS" "US" "OPEN"