dat*_*ppy 28 r fread data.table
我有一个大文件(3.5G),我正在尝试导入使用data.table::fread.
它最初是从作为文本打开并保存为CSV的rpt文件创建的.
这适用于较小的文件(相同类型的数据 - 相同列和所有.这个只是更长的时间范围和更广泛的范围).
当我试着跑
mydata <- fread("mycsv.csv")
Run Code Online (Sandbox Code Playgroud)
我收到错误:
fread中的错误("mycsv.csv"):在字符串中嵌入nul:'y\0e\0a\0r\0'
这是什么意思?
Rob*_*ski 14
我们可以使用以下命令删除命令行上的null终止符:
sed 's/\\0//g' mycsv.csv > mycsv.csv
Run Code Online (Sandbox Code Playgroud)
或者根据@marbel的建议,fread允许你在文本中传递sed调用.如:
fread("sed 's/\\0//g' mycsv.csv")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以使用read.csvUTF-16LE 而不是fread.
read.csv("mycsv.csv",fileEncoding="UTF-16LE")
Run Code Online (Sandbox Code Playgroud)
考虑到您的数据大小,使用read.csv需要几分钟,但我认为这没什么大不了的。
小智 5
您可以测试这个小功能:
cleanFiles<-function(file,newfile){
writeLines(iconv(readLines(file,skipNul = TRUE)),newfile)
}
Run Code Online (Sandbox Code Playgroud)
这对我来说是工作
| 归档时间: |
|
| 查看次数: |
21342 次 |
| 最近记录: |