【问题标题】:R read.csv breaks on special symbolR read.csv 在特殊符号上中断
【发布时间】:2016-02-26 15:34:16
【问题描述】:

我正在尝试解析 UTF-8 文件,但 R 解析器无法读取此符号 之后的字符串(我已截取了屏幕截图,因为它不会粘贴到浏览器)

d <- read.csv2('myfile.csv', header = FALSE, sep=",", quote="\"", numerals='no.loss', encoding="UTF-8", skipNul=TRUE)
tail(d)[,]

有没有办法从文件中删除这个符号?

UPD: vi 将此符号显示为 ^Z
UPD2: 链接到示例文件 https://www.dropbox.com/s/1kucjnia8ew1u5n/1.csv?dl=0

【问题讨论】:

  • 在云中保存一个虚拟 csv 文件的副本会很有用,这样潜在的回答者可以使用您的数据
  • 我不知道。您可以尝试使用data.table 中的fread,看看问题是否仍然存在/fread 有一个聪明的解决方案。
  • 您确定文件是 UTF 编码的吗?你在什么操作系统上?您是如何生成/获取文件的?
  • @MrFlick 是的。它是 UTF-8 w/o BOM,由 ubuntu 中的 python 3 脚本编写(解析数据)。现在我在我的 Windows 7 机器上使用它。
  • 即使使用您的文件仍然无法重现您的问题...read.csv("https://www.dropbox.com/s/1kucjnia8ew1u5n/1.csv?raw=1", encoding="UTF-8", skipNul=TRUE, header=FALSE)

标签: r csv encoding


【解决方案1】:

如果遵循@cory 提出的代码,我只会收到警告:

read.csv("https://www.dropbox.com/s/1kucjnia8ew1u5n/1.csv?raw=1", encoding="UTF-8", skipNul=TRUE, header=FALSE)

## Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote,  :
  incomplete final line found by readTableHeader on 'https://www.dropbox.com/s/1kucjnia8ew1u5n/1.csv?raw=1'

但实际数据的加载方式与您的 csv 相同。 (看看罪魁祸首,一个\032 字符)。

所以这是避免警告的替代代码:

a <- readChar("https://www.dropbox.com/s/1kucjnia8ew1u5n/1.csv?raw=1",
               useBytes = TRUE, 
               nchars = 1000)
b <- gsub("\\\032", " ", a)
new_a <- read.table(header = FALSE, text = b, sep = ",")

【讨论】:

    猜你喜欢
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 2015-06-10
    • 2020-09-07
    • 2021-03-17
    相关资源
    最近更新 更多