【问题标题】:data.table-fread(), reading table with multiple quotes in the first celldata.table-fread(),读取第一个单元格中带有多个引号的表格
【发布时间】:2014-09-01 15:05:37
【问题描述】:

我有很多大表,它们的起始单元格可能包含多个引号,如下所示:

test.txt-

"abc"" xyz""",123
mno,456

现在fread("test.txt",sep=",",header=F) 抛出一个错误

Error in fread("123.txt", sep = ",", header = F) : 
  Unexpected character (" nxy) ending field 1 of line 1

它读到这个 test2.txt-

qwe,999
"abc"" nxyz""",123
mno,456

虽然fread("test2.txt",sep=",",header=F) 是正确的。

我需要让它以另一种方式运行。有什么解决办法吗?

@Arun,我尝试从 github 安装 data.table v1.9.3,但出现以下错误,有什么想法吗?谢谢。

> remove.packages("data.table")
Removing package from ‘C:/Users/sidpat/Documents/R/win-library/3.0’
(as ‘lib’ is unspecified)
> install_github("Rdatatable/data.table")
Installing github repo data.table/master from Rdatatable
Downloading master.zip from https://github.com/Rdatatable/data.table/archive/master.zip
Installing package from C:\Users\SIDPAT\AppData\Local\Temp\RtmpUBzt2K/master.zip
Installing data.table
"C:/PROGRA~1/R/R-30~1.3/bin/x64/R" --vanilla CMD build  \
  "C:\Users\sidpat\AppData\Local\Temp\RtmpUBzt2K\devtoolsc241bb5e2e\data.table-master"  \
  --no-manual --no-resave-data 

* checking for file 'C:\Users\sidpat\AppData\Local\Temp\RtmpUBzt2K\devtoolsc241bb5e2e\data.table-master/DESCRIPTION' ... OK
* preparing 'data.table':
* checking DESCRIPTION meta-information ... OK
* cleaning src
* installing the package to build vignettes
Warning: running command '"C:/PROGRA~1/R/R-30~1.3/bin/x64/Rcmd.exe" INSTALL -l "C:\Users\SIDPAT\AppData\Local\Temp\RtmpKyohpy\Rinst1ee42c4a1653" --no-multiarch "C:/Users/sidpat/AppData/Local/Temp/RtmpKyohpy/Rbuild1ee425057481/data.table"' had status 1
      -----------------------------------
* installing *source* package 'data.table' ...
** libs
Warning: running command 'make -f "Makevars" -f "C:/PROGRA~1/R/R-30~1.3/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-30~1.3/share/make/winshlib.mk" SHLIB="data.table.dll" WIN=64 TCLBIN=64 OBJECTS="assign.o bmerge.o chmatch.o dogroups.o fastmean.o fastradixdouble.o fastradixint.o fcast.o fmelt.o forder.o frank.o fread.o gsumm.o ijoin.o init.o rbindlist.o reorder.o uniqlist.o vecseq.o wrappers.o"' had status 127
ERROR: compilation failed for package 'data.table'
* removing 'C:/Users/SIDPAT/AppData/Local/Temp/RtmpKyohpy/Rinst1ee42c4a1653/data.table'
      -----------------------------------
ERROR: package installation failed
Error: Command failed (1)

【问题讨论】:

  • 我想它对不一致的sep 和糟糕的引用感到不安
  • 也有空条目。您的示例的尺寸应该是多少?
  • 更多:看起来您应该转置数据。我用verbose = TRUE 看了看,输出中有很好的建议。
  • @RichardScriven,我的数据集的维度是 100,000 行和 10 列。其次,我从一个我无法控制的外部源接收数据,所以在读入之前不能转置,你能用 verbose=TRUE 解释你上面提到的建议吗
  • @510947,你能试试 [这里](github.com/Rdatatable/data.table) 的开发版本 1.9.3。它对我有用。

标签: r data.table fread


【解决方案1】:

你试过df <- read.csv("test.txt", sep=",", header=F, quote="")吗?然后可以将生成的数据框转换成数据表dt <- data.table(df)

这里有一个关于 fread 和 unbalanced quotes 的讨论: data.table::fread and Unbalanced "

我假设 test2.txt 有效,因为该字段不以引号开头。

【讨论】:

  • 我有一个 100MB 以上的数据集,read.csv 确实可以工作,但速度很慢;因此我想用 fread 来阅读它。
猜你喜欢
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 2013-08-04
相关资源
最近更新 更多