我使用以下代码来读取数据:
data <- read.csv2("Responser - Vasket - 20.06.2013.csv")
有没有什么选项应该使用,让R知道我有特殊字符?
而且我正在Windows 7上使用Rstudio。
data <- read.csv2("Responser - Vasket - 20.06.2013.csv")
read.csv2
中指定fileEncoding
参数(而不是)encoding
)。
在使用R之前,最好使用文本编辑器检查文件的编码。例如,如果您在Notepad++中打开文件,则Encoding菜单可让您查看和更改字符编码。在TextPad中,您可以从“另存为..”对话框中更改编码。大多数文本编辑器都会有这样的功能。
这是您需要传递给fileEncoding
的值。如果文件不是UTF-16,则无法仅声明文件为UTF-16。这就是为什么您收到警告的原因。
dd <- data.frame(area = c("øø", "åå", "ææ"), site = c("åå", "ææ", "øø"))
write.csv2(x = dd, file = "åæø.csv", row.names = FALSE)
dd2 <- read.csv2(file = "åæø.csv")
all.equal(dd, dd2)
sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=Norwegian (Bokmål)_Norway.1252 LC_CTYPE=Norwegian (Bokmål)_Norway.1252
[3] LC_MONETARY=Norwegian (Bokmål)_Norway.1252 LC_NUMERIC=C
[5] LC_TIME=Norwegian (Bokmål)_Norway.1252
getOption("encoding")
[1] "native.enc"
编辑来自@Ole Henrik Skogstrøm 8月7日7:57的下面评论:
@Ole Henrik Skogstrøm所说的评论“如果我...在Rstudio中使用查看命令,这个错误仍然存在”和“如果我只是输入并将结果放入控制台中,它就能工作”,揭示出原始帖子中给出的信息不足。
我的上面的答案实际上适用于最初提出的问题:将特殊字符读入R。但是,并且在OP中没有指定的是不起作用的是,使用RStudio的‘View
’显示æøå不正确。当从控制台运行View(dd)
(dd
请参见上面的虚拟数据)时,在‘Workspace pane’中单击该对象时,数据查看器中会将æøå显示为“黑色菱形问号”。反之,如果您仅使用RGui而不使用RStudio,则View(dd)
在数据查看器中正确地显示字符。
因此,与将æøå读入R有关的问题不是问题,而是在RStudio中进行View
-ing的问题。另请参见RStudio支持上的此帖子。
getOption("encoding")
返回的是 "native.enc"?那就试试这个:read.table(text='"æ", "ø", "å"', sep = ",", encoding = "native.enc")
? - Henrikhttps://drive.google.com/folderview?id=0BzoGQiFdDwiNNm02UnNLVVNja3c&usp=sharing
打开两个文件应该会发现,用记事本打开的 MS-DOS 版本显示的字母是不正确的(可以忽略),而“逗号分隔”的版本则显示正确。将“Names CSV”文件保存为文本文件,编码为“UTF-8”,并命名为“Names CSV UTF8”。将您在 R 中的工作目录设置为这些文件所在的文件夹,并运行以下代码。test1 <- read.csv2("Names CSV.csv")
test2 <- read.csv2("Names CSV UTF8.txt")
test1应该显示带问号的黑色菱形符号,test2应该正确显示名称。
我认为之前的答案可能没有起作用是因为表格是由R创建的,R设置了字符编码,而我们遇到的问题是不同的软件或系统设置了编码。
如果你有很多文件需要处理,这个解决方案并不是很有用,但至少是一个开始。
encoding = "UTF-16"
。这是一个指示编码方式的命令,建议在编程中使用。 - user1609452ISO-8859-1
。根据此处:查看完全覆盖的语言。 - agstudy