我使用 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 .
关于r - write.xlsx (openxlsx) 的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52299696/