write.xlsx的编码问题(openxlsx)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了write.xlsx的编码问题(openxlsx)相关的知识,希望对你有一定的参考价值。
我使用write.xlsx()
函数(来自openxlsx
包)将列表对象转换为excel电子表格,其中列表的每个元素都转换为excel文件的“工作表”。在过去,这个功能非常有用,我从未遇到过任何问题。我的理解是,这个包和函数特别不需要在计算机上进行任何特定的Java更新以使其工作。
但是,最近我发现该函数产生错误。这是我在控制台中为列表运行write.xlsx()时所说的内容:
Error in gsub("&", "&", v, fixed = TRUE) :
input string 5107 is invalid UTF-8
我已经确定了导致问题的数据帧,但我不确定如何识别数据帧的哪个部分导致错误。
我甚至继续将enc2utf8()
函数用于此数据框中的所有列,但我仍然遇到错误。我在数据框本身上使用了substr()
函数,它向我展示了每列的第一个n
字符,但我没有看到输出中有任何明显的问题。
我甚至继续使用install.packages()
函数再次重新下载openxlsx
包,以防任何更新。
有谁知道如何确定错误的原因?这是函数,因为它写在包中?如果问题在于数据本身的编码,那么enc2utf8()
不足以解决问题吗?
谢谢!
我刚遇到同样的问题。在此question的基础上,您可以使用以下任一方法替换数据框中的所有错误字符:
library(dplyr)
df %>%
mutate_if(is.character, ~gsub('[^ -~]', '', .))
仅适用于字符列,或:
df %>%
mutate_all(~gsub('[^ -~]', '', .))
对于所有列,然后使用write.xlsx()
导出到XLSX。
以上是关于write.xlsx的编码问题(openxlsx)的主要内容,如果未能解决你的问题,请参考以下文章
使用 openxlsx 在 R 中使用 write.xlsx 创建的 Excel 文件的密码保护
使用write.xlsx将数据框写入R中的excel时如何以粗体打印顶行
R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称将数据写入Excel文件新的表单(sheet)中将文件保存为xls文件格式(而不是xlsx)