R/RStudio 中文本编码可能出现的问题

问题描述 投票:0回答:1

当我使用 read_csv 读取 .csv 文件时遇到一个奇怪的问题。恐怕我认为我无法生成一个可重现的示例,因为问题可能涉及我当前的 R/RStudio 会话以及它们在读取文件时如何交互,需要文件和类似的设置。 我不确定,但我倾向于文本编码不匹配的一些问题,但我对此知之甚少,因此我寻求堆栈溢出蜂巢思维的高级建议。

无论如何,这就是我的行为。

该标题名为“fl”,包含美国所有行政区的 FIPS 代码。我以阿拉斯加的“人口普查区”为例,但同一标题中还有其他类似的情况。

以下会产生合理的输出。

> fl %>% filter(str_detect(fl$NAME, 'Hoonah'))
# A tibble: 1 × 6
  FIPS  NAME                      STATEFPn COUNTYFPn STATEFP COUNTYFP
  <chr> <chr>                        <int>     <int> <chr>   <chr>   
 1 02105 Hoonah–Angoon Census Area        2       105 02      105     

但是,如果我执行以下操作,通过在控制台提示符下输入整个名称,我什么也得不到。

> fl %>% filter(NAME=='Hoonah-Angoon Census Area')
 # A tibble: 0 × 6
 # … with 6 variables: FIPS <chr>, NAME <chr>, STATEFPn <int>, COUNTYFPn > <int>, STATEFP <chr>,
 #   COUNTYFP <chr>
 # ℹ Use `colnames()` to see all variable names

但是,如果我从第一个输出中复制并粘贴,它就会起作用并且我得到了这个。

> fl %>% filter(NAME=='Hoonah–Angoon Census Area')
# A tibble: 1 × 6
  FIPS  NAME                      STATEFPn COUNTYFPn STATEFP COUNTYFP
  <chr> <chr>                        <int>     <int> <chr>   <chr>   
1 02105 Hoonah–Angoon Census Area        2       105 02      105     

我有一些怀疑,这与我的 RStudio 会话和文件中的内容之间的某种字符编码问题/不匹配有关,尽管事实是,据我所知,文件(由guess_encoding()检查)和我的会话(如“文件:使用编码保存”中设置,然后使用“文件:使用编码重新打开”)都读取“UTF-8”。

对正在发生的事情有什么想法吗?

r text encoding character-encoding
1个回答
0
投票

您的问题与编码没有太大关系,即使使用相同的编码,也有一些字符看起来与眼睛相似,但有所不同。 在你的情况下,破折号。 在第一种情况下,您有一个连字符,在第二种情况下,您有一个破折号。

fl$NAME <- gsub("–", "-", fl$NAME)

以下内容会将文本中的破折号转换为连字符,因此您可以像以前一样自由键入连字符,并且它应该匹配。

© www.soinside.com 2019 - 2024. All rights reserved.