我使用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()
不足以解决问题吗?
谢谢!
答案 0 :(得分:1)
就发现错误而言,给出的数字将您指出问题(在您的情况下为5107)。这似乎是在计算写入文件的字符串。为了找到问题所在的特定数据点,此方法对我有用:
假设我们的数据框有20个变量,其中10个是字符类型。