我有一个.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位。
提前致谢。
我写了一个较长的答案对同一问题在这里: R于Windows系统:字符编码地狱 。
快速回答,使用参数编码,而不是fileEncoding应该解决您的第一个问题。 您将无法在控制台或在RStudio表视图可能读它,但你将能够在formulaes使用它。
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")
这工作得很好。
后来我想,那也许是因为当我把它保存到CSV与R 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选项)和它工作得很好。