【问题标题】:R accented charactersR 重音字符
【发布时间】:2012-11-24 09:50:06
【问题描述】:

我在 Win 7 x64 上使用 R 版本 2.15.2 (2012-10-26) 和 RStudio 版本 0.97.168,语言环境为 English_United Kingdom.1252。

我想使用 'gsub' 将 'christian grgić' 替换为 'christian grgi[ćc]' (后面的字符串稍后将用作正则表达式来查找重音和非重音版本的名称) .

但是,R 似乎不将 ć 识别为带重音的 c。这段代码

name <- "christian grgić"
gsub("ć","[cć]",name)

给出这个输出

[1] "[cc]hristian grgi[cc]"

而不是我想要的:

[1] "christian grgi[cć]"

非常感谢任何帮助。

【问题讨论】:

  • Encoding 可能是一个起点。
  • 请参阅此问题以获取有关 regexing 国际文本的提示:stackoverflow.com/questions/11369668/…
  • 谢谢,但目前我无法理解编码。我的系统默认编码似乎是 ISO8859-1(我从 localeToCharset 得到的)。如果我用这种编码保存我的脚本,下次打开它时重音 c 会丢失。所以我用 UTF-8 编码保存(RStudio 提供了这个选项),下次再用 UTF-8 编码重新打开。但是,如果我运行 name &lt;- "christian grgić" 然后 Encoding(name) 我得到“未知”,我无法为字符串设置任何编码。

标签: r


【解决方案1】:

试试这个:

Encoding(name) <- "UTF-8"
gsub("ć","[cć]",name)
#[1] "christian grgi[cć]"

注意这是我从 sessionInfo() 获得的本地信息:

> locale: [1]
> en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

【讨论】:

  • 此解决方案取决于本地会话信息?
  • 谢谢,正如我刚刚在上面添加的,您的代码的第一行对我不起作用。我从 sessionInfo() 得到的是locale: [1] LC_COLLATE=English_United Kingdom.1252
  • 短语“不起作用”有多种可能的解释。
  • 如果我运行Encoding(name),结果会得到Unknown。如果我尝试在您的第一行代码中设置编码,然后再次运行Encoding(name),结果是相同的(Unknown)。我无法为name 分配任何编码。我就是这个意思。
  • 操作的问题是特定于 Windows 的。
猜你喜欢
  • 2018-02-18
  • 2013-12-28
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 2013-07-07
  • 2023-03-03
相关资源
最近更新 更多