write.xlsx的编码问题(openxlsx)

im2*_*drf 6 encoding export r list openxlsx

我使用write.xlsx()函数(从openxlsx包中)将列表对象转换为Excel电子表格,其中列表的每个元素都转换为excel文件的"工作表".在过去,这个功能非常有用,我从未遇到过任何问题.据我所知,这个包和函数特别不需要在计算机上进行任何特定的Java更新以使其工作.

但是,最近我发现该函数产生错误.这是我在控制台中为列表运行write.xlsx()时所说的内容:

Error in gsub("&", "&", v, fixed = TRUE) : 
  input string 5107 is invalid UTF-8
Run Code Online (Sandbox Code Playgroud)

我已经确定了导致问​​题的数据帧,但我不确定如何识别数据帧的哪个部分导致错误.

我甚至继续将该enc2utf8()函数用于此数据框中的所有列,但我仍然遇到错误.我已经substr()在数据框本身上使用了这个函数,它向我展示n了每列的第一个字符,尽管我没有看到输出中有任何明显的问题.

我甚至继续使用该install.packages()功能再次重新下载openxlsx包,以防任何更新.

有谁知道如何确定错误的原因?这是函数,因为它写在包中?如果问题出在数据本身的编码中,那enc2utf8()还不足以解决问题吗?

谢谢!

sbh*_*bha 8

我只是有同样的问题。基于此问题,您可以将数据框中的所有不良字符替换为:

library(dplyr)
df %>%
  mutate_if(is.character, ~gsub('[^ -~]', '', .))
Run Code Online (Sandbox Code Playgroud)

仅用于字符列,或:

df %>%
  mutate_all(~gsub('[^ -~]', '', .))  
Run Code Online (Sandbox Code Playgroud)

所有列,然后使用导出到XLSX write.xlsx()