data.table问题报告网站对于无聊的报告持谨慎态度。运行1.11.4版本的人可以在我报告t之前为我确认这个问题吗?
我们有一个较旧的脚本,无需复杂地导入从Qualtrics分发的一些CSV文件。这些Qualtrics文件,我现在不允许向您展示,它们具有大量复杂的字符串,在前100行中有嵌入式回车符。但是,我有一个最小可重复的例子。 R&s的read.csv失败了,不知何故,data.table fread一直是冠军。 Qualtrics文件在row1中有变量名,然后问题本身被输入到下一行。在问题中间随机放置回车(可能是从MS Word文件粘贴)。
今天我们注意到fread不再有效。我刚刚测试了几次,安装了data.table 1.10.4-3(没有遇到麻烦)和当前的1.11.4确实导致了问题。我的最小可重复示例的问题的症状是
> library(data.table)
data.table 1.11.4 Latest news: http://r-datatable.com
> fread("dt-test.csv")
id,y,x1,x2\rRespondentidentification, "An
1: variable", "Working
2: input", "more
outcome
1: on
2: input"\rResp1,33,22,33\rResp2,31,19,32
Warning message:
In fread("dt-test.csv") :
Found and resolved improper quoting in first 100 rows. If the fields are not quoted (e.g. field separator does not appear within any field), try quote="" to avoid this warning.
当您检查麻烦的CSV文件时,您会看到Qualtrics提供了第2行,它在引用的字符串中间嵌入了回车符。这些事情导致R的read.csv失败,为什么我开始首先使用fread。但是,在故障文件中有Windows回车符号," ^ M"我们期望实际的新线路。如果我用" ^ M"回车,然后问题解决了。
现在,关于我的MRE。当我尝试将其粘贴在这里时," ^ M"新的线条符号变成了新的线条!所以我放入" ^ M"符号应该是文字。这模仿了Qualtrics文件的错误结构:
id,y,x1,x2^MRespondentidentification, "An outcome
variable", "Working on
input", "more input"^MResp1,33,22,33^MResp2,31,19,32
我在这里放了一份最小测试文件的副本:http://pj.freefaculty.org/scraps/dt-test.csv 如果你们其中一个勇敢的灵魂愿意测试确认
我刚注意到LibreOffice打开了该文件,它识别出" ^ M"作为新线,它保护第2行中间的回车。
会话信息:
> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.11.4
loaded via a namespace (and not attached):
[1] compiler_3.4.4