的WinXP-X32,R-2.13.0奇怪的字符:R和Windows语言环境的交互?
亲爱的名单,
我有一个问题,(我认为)涉及到
我想刮Windows和R.
之间的相互作用与夏威夷群岛上的数据表。这是我的R代码里面:library(XML)
u <- "http://en.wikipedia.org/wiki/Hawaii"
tables <- readHTMLTable(u)
Islands <- tables[[5]]
输出(第一组列):
Island Nickname > > Islands Island Nickname > > Location 1 Hawaiʻi[7] The Big
岛19A°34A€²N155A°30A€²W/  19.567°N 155.5°/ 19.567; -155.5 2毛伊岛[8]谷岛20°48°N 156°20°/°C/ °20.8°N 156.333°/°20.8; -156.333 3 Kaho»olawe [9]目标岛20°33'N 156°36°/°C 20.55°N 156.6°/ 20.55°; -156.6 4拉涅我[10]菠萝岛 20°50°N 156°56°/°0°°20.833°N 156.933°/°20.833; -156.933 5MolokaÊ»i [11]友好岛21°08' 157°02'/ 21.133°N 157.033°/ 21.133; -157.033 6或ahu [12]聚会场所 21°28°N 157°59°/°21.467°N 157.983°W/21.467; -157.983 7考艾我[13]花园小岛22°05'N 159°30'/ 22.083°N 159.5°/ 22.083; -159.5 8倪仕豪[14]故宫
21°54'N 160°10°/ 21.9°N 160.167°W/21.9; -160.167
正如你所看到的,那里有“怪异”的字符。我也试过readHTMLTable(u, encoding = "UTF-16")
和readHTMLTable(u, encoding = "UTF-8")
但这并没有帮助。
在我看来,有可能是用的字符集的Windows设置和R.相互作用的问题
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
此外,我试图做出改变directl y从Windows命令提示符处使用:chcp 65001
及其变体,但这并未改变任何内容。
我注意到通过搜索网络,其他人也有问题,但一直没能找到解决方案。我看起来像这是Windows和R如何交互的问题。不幸的是,我所有的三台电脑都有这个问题。它发生在WinXP-x32和Win7-x86下。
有没有办法让R覆盖Windows设置,否则可以解决问题? 我也尝试了其他网站,每当有待删除的文本中有é,ü,ä,等等时就会出现问题。
谢谢 罗杰
交叉帖子,Ripley教授+1:https://stat.ethz.ch/pipermail/r-help/2011-May/277057.html – mdsumner 2011-05-04 11:01:52
奇怪。我运行Windows 7(64位),你的代码在我的机器上完美运行。 – Andrie 2011-05-04 11:02:40
只是在黑暗中拍摄:Set.setlocale文档建议更改会话中的编码可能会被忽略,不推荐使用。您可以尝试从命令行启动R,并按照[在此处]概述的方式声明编码(http://cran.r-project.org/doc/manuals/R-intro.html#Invoking-R-from-the-command -line) – joran 2011-07-15 01:14:30