10

我一直在尝试将 csv 文件读入 R,但它一直被切断。我认为这可能是由于文件编码,但我不确定。

这是我运行的代码:

read.csv('crunchbase_companies_2.csv', fileEncoding="UTF-8", quote="")

然后我收到一条警告消息:In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,: invalid input found on input connection.

R 读取数据,但仅在它遇到特殊字符然后停止时才读取。所以我最终只得到了 R 中的部分数据。我粘贴了我在这里得到的数据:http: //pastebin.com/EQLnXz2W。请注意,当它碰到“Ì”之类的东西时它会切断。所以这些字符不在样本数据中。

我还使用 . 检查了终端中的编码file。它返回Non-ISO extended-ASCII English text, with CR line terminators

我需要做什么才能读取整个数据集?

4

3 回答 3

8

所以虽然我不太清楚为什么,但最终的工作是在调fileEncoding​​用latin1read.csv 函数时改变。

此处的另一个答案中提到了这一点。不知何故,这是我没有尝试过的一件事......

于 2013-10-26T19:58:59.103 回答
6

我今天遇到了类似的问题,花了几个小时。我尝试更改 encoding/fileEncoding、setlocal 和其他一些在这里找到的东西。但它们都不适合我。

最终我找到了一个非英文的帖子(那些人可能对此更有经验)和这个技巧:将开放模型从“r”更改为“rb”。

就我而言,我使用 readLines,所以它是

fileIn=file("userinfo.csv",open="rb",encoding="UTF-8")
lines = readLines(fileIn, n = rowPerRead, warn = FALSE)

我不完全明白为什么,我的猜测是Unicode字符在Byte中,所以如果它不是Byte读取的,那大家伙就会阻止扫描。

于 2018-01-02T17:11:20.393 回答
3

经过几个小时在这样的 csv 中苦苦挣扎,尝试了read.csvlike的参数fileEncodingquote我终于read_csvreadr包中使用了 - 只需使用默认参数 - 它立即完美地加载了所有内容!

一个缺乏想象力的答案,但在您尝试自己对整个文件进行逆向工程之前值得尝试......

于 2018-10-30T10:42:01.493 回答