R 使两个看起来相同但不完全相同的字符串相同



我有两个看起来相同但不完全相同的字符串。

> t
[1] "2009_Manaus_Aerotáxi_crash"
> t2
[1] "2009_Manaus_Aerotáxi_crash"
> identical(t,t2)
[1] FALSE
> str(t)
 chr "2009_Manaus_Aerotaxi_crash""| __truncated__
> str(t2)
 chr "2009_Manaus_Aerotáxi_crash"

如何强制这两个字符串相等?

谢谢

如果您将数据写出 csv,然后在记事本++等程序中打开文件,然后打开查看>所有字符,您将能够看到字符串末尾是否有某些内容,如 LF 或 \r 或 。 然后,您将更好地了解需要删除的内容,并可以使用上述建议(stringi::str_cmp())来测试您知道不起作用的字符串示例,以确保您修复了它。 对我来说,问题原来是空间,这解决了我的问题:

own_dept_expect %>% 
    mutate(check_field = stringr::str_replace_all(check_field,"[:space:]"," ")) %>% 
    write_csv("C:/Users/me/Desktop/spaces_suck.csv")

我在记事本++中验证了现在一切都是统一的。

考虑使用 stringi (https://cran.r-project.org/web/packages/stringi/) 包中的 stri_compare 方法。如果两个字符串相等或规范等效,它返回0。在此处查看文档。

在您的情况下,可以像这样测试它:

require('stringi')
t  = "2009_Manaus_Aerotáxi_crash"
t2 = "2009_Manaus_Aerotáxi_crash"
t3 = "1111_Manaus_Aerotáxi_crash"
ifelse( (stri_compare(t,t2) == 0), "Strings are equal", "Strings are different") 
ifelse( (stri_compare(t,t3) == 0), "Strings are equal", "Strings are different")

希望这有帮助

最新更新