在R中读取csv文件时出现错误

24

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

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

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

我可以使用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

1
我以前从未遇到过这个错误,但是根据错误信息,您的文件中可能有两列具有相同的名称。 - Error404
3
这里有一个解决方案:链接 - Metrics
1
嘿,你说得对,这似乎有效。文件编码为“UCS-2LE”。我会等一会儿再关闭问题,以确保它能正常工作。 - Donbeo
你可以发布一个答案而不是关闭问题... - Ben Bolker
你有多个级别,因为在R中stringsAsFactors的默认值为TRUE,所以所有非数字列都被读取为因子。那么到底是设置正确的编码还是正确的分隔符(如接受的答案中所述)解决了问题呢? - David Arenburg
显示剩余2条评论
11个回答

21

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

x = read.csv(check.names = F)

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

iconv(names(x), to = "ASCII", sub = "")

9

您可以在读取csv文件时始终使用 "Latin1" 编码:

 x = read.csv("LorenzoFerrone.csv", fileEncoding = "Latin1", check.names = F)

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

8
原因是编码无效。我已经通过将所有的“è”替换为e来解决问题。

2
我不确定这是否回答了问题。 - Opal

5

我发现这个问题是由文件的代码引起的,我通过使用Windows记事本打开它,以UTF-8格式保存,然后再用Excel重新打开(一开始会出现乱码),再重新以UTF-8格式保存,最终解决了问题!


4
将文件格式更改为CSV UTF-8。这对我有用。

这个答案之前已经给出过了。 - slfan

2

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


1
通常是编码问题。您可以尝试更改编码,或删除有问题的字符(只需使用您最喜欢的编辑器并替换所有实例)。在某些情况下,R将会输出字符位置,例如:
无效的多字节字符串1847
这应该会让您的生活更轻松。另请注意,您可能需要多次重复此过程(删除所有有问题的字符或尝试几种编码方式)。

0

我通过删除写作中的任何图形符号(即重音符号)来解决了这个问题。我的标题是用西班牙语写的,里面有一些重音符号。我用简单的词语替换了它们(如México=Mexico),问题得到了解决。


0

我知道这是一个旧帖子,但是想对非英语母语的人说,如果你使用","作为小数分隔符,


0

不确定这是否有帮助,我曾遇到类似的问题,通过删除我尝试导入的 CSV 文件中的“引号”来解决。数据库的第一行将列名写为“colname”,“colname2”,“等等”,我删除了所有的“引号”,然后 R 正常读取了 CSV 文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接