我一直在尝试将一个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
。
阅读整个数据集需要做什么?
答案 0 :(得分:8)
因此,虽然我不太清楚原因,但最终工作的是在调用read.csv函数时将fileEncoding
更改为latin1
。
在另一个答案here中提到了这一点。不知何故,这是我没有尝试过的一件事......
答案 1 :(得分:3)
我今天遇到了类似的问题,花了好几个小时。 我尝试更改编码/ fileEncoding,setlocal以及此处发现的其他一些内容。但它们都不适合我。
最终我发现了一个非英文帖子(那些人可能对此有更多的经验)和这个诀窍:将开放模型从“r”改为“rb”。
在我的情况下,我使用readLines,所以它是
fileIn=file("userinfo.csv",open="rb",encoding="UTF-8")
lines = readLines(fileIn, n = rowPerRead, warn = FALSE)
我不完全理解为什么,我的猜测是Unicode字符是Byte,所以如果它不被Byte读取,那个大家伙就会阻止扫描。
答案 2 :(得分:1)
经过数小时的类似csv的努力,像read.csv
和fileEncoding
这样的quote
的参数实验之后,我终于在read_csv
包中使用了readr
只需使用默认参数-即可立即完美加载所有内容!
一个没有想象力的答案,但是值得尝试,然后再尝试对整个文件进行反向工程...