R openxlsx包。 把NA写成空白?

我正在使用openxlsx包来读取和写入Excel文件。

我注意到,当我使用write.xlsx(MyData,file =“MyFile.xlsx”)将表格导出到Excel时,NAs显示为#NUM! 在Excel上打开该文件时。

有没有任何选项可以输出空白? 我一直在googlesearch,并尝试select,如showNA或保持,但他们似乎没有任何效果。

我无法理解downvote。 我以为有些人只是用一个选项就知道如何去做,而不需要每个NA都需要手动转换。

正如我认为这对其他用户可能是重要和有用的,我也曾经在openxlsx的github开发页面上询问过,他们回答说:

  https://github.com/awalker89/openxlsx/issues/108#issuecomment-125142950 

如果有人有兴趣,如果你更新到开发版本

  devtools::install_github("awalker89/openxlsx") 

你会得到这个function的支持。

现在的缺省行为是将NAs转换为空白如果我们想要#N / A,我们必须使用选项keepNA = TRUE选项keepNA = TRUE保持#N / A

 require('openxlsx') df <- head(iris) df[2,3] <- NA df[2,5] <- NA df[3,5] <- NaN openXL(write.xlsx(df, file = tempdir())) 

在这里输入图像描述

  require('openxlsx') df <- head(iris) df[2,3] <- NA df[2,5] <- NA df[3,5] <- NaN openXL(write.xlsx(df, file = tempdir(), keepNA = TRUE)) 

在这里输入图像说明

好问题! 一个我一直在看。 我相信默认的行为是输出NA值作为空白。 但是,正如您在示例代码中所显示的,您同时具有NANaN值。 列中出现一个或多个NaN值将导致该列中的所有NANaN值在Excel中显示为#NUM!

要解决这个问题,请在导出文件之前用NAreplace文件中NaN所有实例:

df[is.na(df)] = NA

当x是is.nan时,请注意使用is.na而不是is.nan。

请参阅: 如何在一个巨大的数据框中用零replaceNaN值?