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

时间:2016-02-11 12:29:04

标签: r string comparison

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

> 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"

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

由于

2 个答案:

答案 0 :(得分:0)

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

在你的情况下,人们会像那样测试它:

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")

希望这有帮助

答案 1 :(得分:0)

如果将数据写到csv中,然后在诸如Notepad ++之类的程序中打开文件,然后打开view>所有字符,您将可以看到字符串末尾是否有某些字符,例如LF或\ r或\ n。然后,您将有一个更好的主意,您需要删除什么,可以使用上面的建议(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”)

我在Notepad ++中验证,现在一切都统一了。