微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

奇怪的人物:R和Windows语言环境的互动?

WinXP-x32,R-2.13.0

亲爱的名单,

我有一个问题(我认为)涉及到Windows和R之间的交互.

我正在试图用夏威夷群岛的数据来抄表.这是我的R代码

library(XML)
u <- "http://en.wikipedia.org/wiki/Hawaii"
tables <- readHTMLTable(u)
Islands <- tables[[5]]

输出是(第一列):

06001

Island 19°34′N 155°30′W /
19.567°N 155.5°W / 19.567;
-155.5 2 Maui[8] The Valley Isle 20°48′N 156°20′W /
20.8°N 156.333°W / 20.8;
-156.333 3 Kahoʻolawe[9] The Target Isle 20°33′N
156°36′W / 20.55°N
156.6°W / 20.55; -156.6 4 LÄnaÊ»i[10] The Pineapple Isle
20°50′N 156°56′W /
20.833°N 156.933°W / 20.833;
-156.933 5 Molokaʻi[11] The Friendly Isle 21°08′N
157°02′W / 21.133°N
157.033°W / 21.133; -157.033 6 Oʻahu[12] The Gathering Place
21°28′N 157°59′W /
21.467°N 157.983°W / 21.467;
-157.983 7 Kauaʻi[13] The Garden Isle 22°05′N
159°30′W / 22.083°N
159.5°W / 22.083; -159.5 8 Niʻihau[14] The Forbidden Isle
21°54′N 160°10′W / 21.9°N
160.167°W / 21.9; -160.167

正如你所看到的,那里有“奇怪”的字符.我也试过readHTMLTable(u,encoding =“UTF-16”)和readHTMLTable(u,encoding =“UTF-8”)
但这没有帮助.

在我看来,字符集和R的Windows设置的交互可能会有一个问题.

sessionInfo()给出

> sessionInfo()
R version 2.13.0 (2011-04-13)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=Dutch_Netherlands.1252  LC_CTYPE=Dutch_Netherlands.1252    LC_MONETARY=Dutch_Netherlands.1252
[4] LC_NUMERIC=C                       LC_TIME=Dutch_Netherlands.1252  

attached base packages:
[1] stats     graphics  Grdevices utils     datasets  methods   base    

other attached packages:
[1] XML_3.2-0.2

我也试图让R使用另一个设置输入:Sys.setlocale(“LC_ALL”,“en_US.UTF-8”),但这会产生响应:

> Sys.setlocale("LC_ALL","en_US.UTF-8")
[1] ""
Warning message:
In Sys.setlocale("LC_ALL","en_US.UTF-8") :
  OS reports request to set locale to "en_US.UTF-8" cannot be honored

另外,我已经尝试直接从Windows命令提示符,使用:chcp 65001和其中的变体,但没有改变任何东西.

我注意到从网络上搜索其他人也有问题,但还没有找到解决方案.我看起来这是一个Windows和R如何交互的问题.不幸的是,我掌握的这三台电脑都有这个问题.它发生在WinXP-x32和Win7-x86下.

有没有办法使R覆盖Windows设置,否则可以解决问题?
我也尝试过其他网站,每次在文本中都有é,ü,ä,î等等时,就会出现这个问题.

谢谢,
罗杰

不是一个答案:

如果您浏览维基百科页面,并将浏览器中的编码(IE,View – > Encoding;在Firefox中,View – > Character Encoding)更改为Western(ISO-8869-1)或Western(Windows-1252)那么你会看到愚蠢的人物.这应该意味着您可以使用iconv来更改编码并解决您的问题.

#Convert factors to character
Islands <- as.data.frame(lapply(Islands,as.character),stringsAsFactors = FALSE)

iconv(Islands$Island,"windows-1252","UTF-8")

不幸的是,它不起作用可能通过使用不同的转换来获取正确的文本(iconvlist()显示所有的可能性).

这可能只是剥夺了冒犯的人物,虽然这不是理想的.

iconv(Islands$Island,"ASCII","")

原文地址:https://www.jb51.cc/windows/365507.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐