在R中读取csv文件时出错

Don*_*beo 12 csv r

我在用R读取csv文件时遇到一些问题

 x=read.csv("LorenzoFerrone.csv",header=T)

Error in make.names(col.names, unique = TRUE) : 
      invalid multibyte string at '<ff><fe>N'
Run Code Online (Sandbox Code Playgroud)

我可以使用libre office读取文件,没有任何问题.

我无法上传文件,因为它充满了明智的信息.

我能做什么?


设置编码似乎是解决问题的方法.

> x=read.csv("LorenzoFerrone.csv",fileEncoding = "UCS-2LE")
> x[2,1]
[1] Adriano Caruso
100 Levels:  Ada Adriano Caruso adriano diaz Adriano Diaz alberto ferrone Alexey ... Zia Tina
Run Code Online (Sandbox Code Playgroud)

Ant*_*qui 9

在读取 csv 时,您始终可以使用“Latin1”编码:

 x = read.csv("LorenzoFerrone.csv", fileEncoding = "Latin1", check.names = F)
Run Code Online (Sandbox Code Playgroud)

我添加check.names = F以避免在标题中用点替换空格。

由于上述方法并不总是有效,另一种选择是使用data.table库和Latin-1编码:

library(data.table) 

x = fred("LorenzoFerrone.csv", encoding = "Latin-1")

Run Code Online (Sandbox Code Playgroud)


Ant*_*lis 8

原因是编码无效.我用e解决了所有"è"的问题

  • 我不确定这是否回答了问题。 (2认同)

小智 6

这将按原样读取列名称,并且不会返回任何错误:

x = read.csv(check.names = F)
Run Code Online (Sandbox Code Playgroud)

要删除/替换列名中的麻烦字符,请使用以下命令:

iconv(names(x), to = "ASCII", sub = "")
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是正确的解决方案! (2认同)

小智 5

我发现这个问题是由文件代码引起的,我解决了这个问题,用Windows note打开它,用UTF-8保存,然后用Excel重新打开(一开始是乱码),然后用UTF-8重新保存,然后它就工作了!


小智 2

您需要在sep参数中指定正确的分隔符。