gpt4 book ai didi

r - 提取 r 中两个字符串之间的差异 ("relative complement")

转载 作者:行者123 更新时间:2023-12-04 11:47:36 25 4
gpt4 key购买 nike

我找不到办法做到这一点...

raw_string <- "\"+001\", la bonne surprise de M. Jenn M. Ayache http://goo.gl/3EXxy6 via @MYTF1News"

clean_string <- "+001, la bonne surprise de Jenn Ayache"

desired_string <- "\"\"M. M. http://goo.gl/3EXxy6 via @MYTF1News"

我不确定如何调用这种转换。我会说“差异”(如在集合论中,反对“联合”和“交集”)。更好的名称可能是“相对补充”( http://en.wikipedia.org/wiki/Complement_(set_theory)#Relative_complement )。

我想要的字符串只有和 clean_string 中缺少的所有字符,按顺序排列,每次出现一次,包括空格、标点符号和所有内容。

我设法做到的最好的还不够好:
> a <- paste(Reduce(setdiff, strsplit(c(raw_string, clean_string), split = " ")), collapse = " ")
> a
[1] "\"+001\", M. http://goo.gl/3EXxy6 via @MYTF1News"

最佳答案

我也会使用循环:

x <- strsplit(raw_string, "")[[1]]
y <- strsplit(clean_string, "")[[1]]

res <- character(length(x))

j <- 1

for(i in seq_along(x)) {
if (j > length(y)) {
res[i:length(x)] <- x[i:length(x)]
break
}
if (x[i] != y[j]) {
res[i] <- x[i]
} else {
j <- j + 1
}
}

paste(res, collapse = "")
#[1] "\"\"M. M. http://goo.gl/3EXxy6 via @MYTF1News"

请注意与预期结果相比的额外空间。我想你只是错过了它。

如果这太慢了,用 Rcpp 应该很容易实现。

关于r - 提取 r 中两个字符串之间的差异 ("relative complement"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29702198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com