R read.csv 没有加载 .tsv 文件的所有行

R read.csv didn't load all rows of .tsv file

有点神秘。我有一个包含 58936 行的 .tsv 文件。我使用以下命令将文件加载到 R 中:

dat <- read.csv("weekly_devdata.tsv", header=FALSE, stringsAsFactors=TRUE, sep="\t")

但是 nrow(dat) 只显示了这个:

> nrow(dat)
[1] 28485

所以我使用 sed -n 命令将停止位置周围的行(在该行之前、包括和之后)写入一个新文件,并且能够将该文件加载到 R 中,所以我认为没有文件是否损坏。

是环境问题吗?

这是我的 sessionInfo()

> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] tcltk     stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] sqldf_0.4-10   RSQLite_1.0.0  DBI_0.3.1      gsubfn_0.6-6   proto_0.3-10   scales_0.2.4   plotrix_3.5-11
[8] reshape2_1.4.1 dplyr_0.4.1   

loaded via a namespace (and not attached):
 [1] assertthat_0.1   chron_2.3-45     colorspace_1.2-4 lazyeval_0.1.10  magrittr_1.5     munsell_0.4.2   
 [7] parallel_3.1.2   plyr_1.8.1       Rcpp_0.11.4      rpart_4.1-8      stringr_0.6.2    tools_3.1.2 

我是不是 运行 内存不足?这就是它没有完成加载的原因吗?

我最近遇到了类似的问题,结果我遇到了两个不同的问题。

1 - 并非所有行都有正确数量的制表符。我最终使用 awk

对它们进行了计数

2 - 在文件中的某些位置,我有未关闭的引号。这导致它跳过所有行,直到找到结束引号。

我将挖掘我用来调查和修复这些问题的 awk 代码,然后 post 它。

因为我用的是Windows,所以我用的是gitbash自带的awk。

这计算了一行中的制表符数量并打印出那些编号不正确的行。

  awk -F "\t" 'NF!=6 { print NF-1 ":" [=10=] } ' Catalog01.csv  

我用了类似于计数引号的东西,我用 tr 修复了很多。

很确定这不是内存问题。如果问题是不匹配的引号,那么试试这个:

t <-read.csv("weekly_devdata.tsv", header=FALSE, stringsAsFactors=TRUE,sep="\t",
          quote="")

还有一个非常有用的函数 count.fields,我在 table 中使用它来获得各种参数设置结果的高级视图。查看结果:

table( count.fields( "weekly_devdata.tsv", sep="\t"))

并比较:

table( count.fields( "weekly_devdata.tsv",  sep="\t", quote=""))

有时需要使用 readLines 读入,然后删除一行或多行将结果分配给 clean,然后将清理后的行发送到 read.table(text=clean, sep="\t", quote="")

很可能是某些条目中的一些非法字符...检查上传的数量以及问题发生的位置。深入研究原始数据的那一行。 Webdings 字体那种东东!