我有一个.csv文件,其中包含以下数据:
"Ա","Բ" 1,10 2,20
我不能读入R,这样列名就像它们在文件中一样显示。
d <- read.csv("./Data/1.csv", fileEncoding="UTF-8") head(d)
产生以下内容:
> d <- read.csv("./Data/1.csv", fileEncoding="UTF-8") Warning messages: 1: In read.table(file = file, header = header, sep = sep, quote = quote, : invalid input found on input connection './Data/1.csv' 2: In read.table(file = file, header = header, sep = sep, quote = quote, : incomplete final line found by readTableHeader on './Data/1.csv' > head(d) [1] X. <0 rows> (or 0-length row.names)
同时,在不指定fileEncoding的情况下做同样的操作:
> d <- read.csv("./Data/1.csv") > head(d) Ô. Ô² 1 1 10 2 2 20
当我运行“文件”实用程序来找出文件的编码,它说它是UTF-8:
Data\1.csv: UTF-8 Unicode text, with CRLF line terminators
我正在使用RStudio,Windows 7,R版本2.15.2,32位。
提前致谢。
我在这里写了一个更长的答案: Windows上的R:字符编码地狱 。
快速回答,使用参数编码而不是fileEncoding应该可以解决你的第一个问题。 您将无法在RStudio的控制台或表格视图中读取它,但是您可以在配方中使用它。
d <- read.csv("./Data/1.csv", encoding="UTF-8") head(d)
将表格保存为UTF-8文件后:
> test2 <- read.csv("test2.csv", header = FALSE, sep = ",", quote = "\"", dec = ".", fill = TRUE, comment.char = "", encoding = "UTF-8") Warning message: In read.table(file = file, header = header, sep = sep, quote = quote, : incomplete final line found by readTableHeader on 'test2.csv'
这使您在控制台和RStudio视图中看起来如何
> test2 V1 V2 1 <U+0531> <U+0532> 2 1 10 3 2 20
然而重要的是,你可以在R中操作这个。因此,在我的情况下,可以看到脚本窗口输入Ա具有UTF-8编码,而且grep正确地在你的表中找到了这个编码。
> Encoding("Ա") [1] "UTF-8" > grep("Ա", as.character(test2[1,1])) [1] 1
您可能需要找到适合您的设置的编码变体,或者可能需要更改它们。 不幸的是,我不确定它在哪里完成。
您可能无法在所有阶段都做到这一点,但是在Windows 7环境中也可以使其发挥作用。
我尝试了两种方法来复制你的问题。
我把上面的字符复制到RStudio中,用下面的代码将它保存到csv中:
write.csv(c("Ա","Բ", 1,10, 2,20), "test.csv") df <- read.csv("test.csv")
这工作得很好。
然后我想,也许R是作弊,当我将它保存到CSV与R? 所以我只是将这些字符粘贴到一个文本文件中并保存为一个CSV文件。 这种方法也没有问题。
这是我的会话信息:
sessionInfo() R version 3.0.1 (2013-05-16) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C LC_TIME=en_CA.UTF-8 [4] LC_COLLATE=en_CA.UTF-8 LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8 [7] LC_PAPER=C LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats4 grid stats graphics grDevices utils datasets methods base other attached packages: [1] party_1.0-9 modeltools_0.2-21 strucchange_1.4-7 sandwich_2.2-10 zoo_1.7-10 [6] GGally_0.4.4 reshape_0.8.4 plyr_1.8 ggplot2_0.9.3.1 loaded via a namespace (and not attached): [1] coin_1.0-23 colorspace_1.2-2 dichromat_2.0-0 digest_0.6.3 [5] gtable_0.1.2 labeling_0.2 lattice_0.20-23 MASS_7.3-29 [9] munsell_0.4.2 mvtnorm_0.9-9995 proto_0.3-10 RColorBrewer_1.0-5 [13] reshape2_1.2.2 scales_0.2.3 splines_3.0.1 stringr_0.6.2
我有同样的问题,发现该文件已损坏。
我使用OpenOffice打开文件,并使用“UTF8”字符集(您需要单击编辑过滤器设置框)将其保存回来,然后将其与read.csv()
(无编码或filencoding选项)一起导入,并且工作正常。