我使用
然而,最近我发现该函数产生了错误。当我为列表运行write.xlsx()时,控制台会显示以下内容:
我已经确认了导致问题的数据框,但我不确定如何找出是哪部分数据框引起了错误。
我甚至已经针对这个特定的数据框中的所有列使用了
我甚至已经使用
有人知道我该如何找出错误的原因吗?是包中写的函数本身造成的问题吗?如果问题在于数据本身的编码方式,那么
谢谢!
openxlsx
包中的write.xlsx()
函数将列表对象转换为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()
无法解决问题吗?谢谢!
iconv
函数可以在使用openxlsx::write.xlsx
写入数据框时解决这些问题。例如,您可以在数据框的字符列上运行以下代码:dat$col = iconv(dat$col, to="UTF-8")
。 - eipi10lapply
迭代整个列表,然后在每个数据框内部使用lapply
对每个字符列运行iconv
。 - eipi10icon()
是我需要的函数。我使用sapply(..., iconv, to = "UTF-8")
读取了所有文本文件,因此不需要执行lapply()
。问题已解决! - im2wddrf