由于fwrite()无法应用编码参数,我如何以最快的速度导出特定编码的 csv 文件fwrite()?(fwrite()是迄今为止我承认的最快的功能)
fwrite(DT,"DT.csv",encoding = "UTF-8")
Error in fwrite(DT, "DT.csv", encoding = "UTF-8") :
unused argument (encoding = "UTF-8")
Run Code Online (Sandbox Code Playgroud)
您应该发布一个可重现的示例,但我想您可以通过确保 R 中的数据DT采用 UTF-8格式,然后将每列的编码设置为“未知”来实现。然后,当您写出数据时,R 将假定数据以本机编码进行编码。
例如,
DF <- data.frame(text = "á", stringsAsFactors = FALSE)
DF$text <- enc2utf8(DF$text) # Only necessary if Encoding(DF$text) isn't "UTF-8"
Encoding(DF$text) <- "unknown"
data.table::fwrite(DF, "DF.csv", bom = TRUE)
Run Code Online (Sandbox Code Playgroud)
如果 的列DF是因子,则需要将它们转换为字符向量才能起作用。
小智 7
截至撰写本文时,fwrite 不支持强制编码。我使用了一种解决方法,但它比我想要的要迟钝一些。对于你的例子:
readr::write_excel_csv(DT[,0],"DT.csv")
data.table::fwrite(DT,file = "DT.csv",append = T)
Run Code Online (Sandbox Code Playgroud)
第一行将仅将数据表的标题保存到 CSV,默认为 UTF-8,并带有字节顺序标记,以便让 Excel 知道该文件采用 UTF-8 编码。然后, fwrite语句使用追加选项将其他行添加到原始 CSV。这保留了write_excel_csv的编码,同时最大限度地提高了写入速度。
| 归档时间: |
|
| 查看次数: |
7570 次 |
| 最近记录: |