【发布时间】:2013-05-26 04:08:54
【问题描述】:
我有一个 .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 位。
提前致谢。
【问题讨论】:
-
在 Linux 上使用 R 2.15.3 非常适合我。 (第二个警告可能只是文件最后一行缺少“输入”)
-
我可以复制这个问题。我从未使用过这些参数,而是使用
encoding代替,即read.csv(..., encoding="UTF-8")读取文件但标题未显示为字母,而是显示为X.U.FEFF..U.0531. X.U.0532.。 -
观察:
> a = "Ա"; > a; [1] "Ա"工作正常,但这不行:data.frame(a); # a #1 <U+0531> -
可能的解决方法:读取数据并手动添加名称。 names(data) 当你想把它写出来时,问题就来了。我写不出来,但也许有一个解决方案。
-
我在尝试导入 .csv 推文时遇到了类似的问题。
user_name和tweet字段都包含非英文字符等。Here's a gist with a sample of the data. 任何想法如何正确导入此文件并设置正确的编码?
标签: windows r csv utf-8 read.table