gpt4 book ai didi

r - str_replace_all 不适用于包含括号的字符串

转载 作者:行者123 更新时间:2023-12-02 18:43:51 25 4
gpt4 key购买 nike

我有以下 df

library(tidyverse)

a <- tibble(country = c(
"Bolivia (Estado Plurinacional de)",
"Corea del Sur (República de)",
"Reino Unido de Gran Bretaña e Irlanda del Norte",
"Venezuela (República Bolivariana de)",
"Congo (República Democrática del)",
"República Árabe Siria"
))

然后,我尝试用 str_replace_all 函数替换国家/地区

dict <- c(
"Bolivia (Estado Plurinacional de)" = "Bolivia",
"Corea del Sur (República de)" = "Corea del Sur",
"Reino Unido de Gran Bretaña e Irlanda del Norte" = "Reino Unido",
"Venezuela (República Bolivariana de)" = "Venezuela",
"Congo (República Democrática del)" = "Congo",
"República Árabe Siria" = "Siria"
)

a$country %>% str_replace_all(pattern = dict)

但该代码不适用于所有字符串,例如委内瑞拉 (República Bolivariana de) 或刚果 (República Democrática del)。有人可以帮我解决这个问题吗?

非常感谢

最佳答案

只需将您的字典替换为

dict <- c(
"Bolivia \\(Estado Plurinacional de\\)" = "Bolivia",
"Corea del Sur \\(República de\\)" = "Corea del Sur",
"Reino Unido de Gran Bretaña e Irlanda del Norte" = "Reino Unido",
"Venezuela \\(República Bolivariana de\\)" = "Venezuela",
"Congo \\(República Democrática del\\)" = "Congo",
"República Árabe Siria" = "Siria"
)

在正则表达式中,括号是特殊字符。因此,您必须使用转义字符,在本例中为 \\(\\) 而不是 ().

使用这个新的dict你的代码返回

> a$country %>% str_replace_all(pattern = dict)
[1] "Bolivia" "Corea del Sur" "Reino Unido" "Venezuela" "Congo" "Siria"

关于r - str_replace_all 不适用于包含括号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67706628/

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