【问题标题】:R openxlsx package. writing NA as blanks?R openxlsx 包。把 NA 写成空格?
【发布时间】:2015-10-16 04:24:12
【问题描述】:

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

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

是否有任何选项可以将其导出为空白? 我一直在谷歌搜索并尝试了诸如 showNA 或 keepNA 之类的选项,但它们似乎没有任何效果。

【问题讨论】:

  • 如果在该包中没有找到参数,您可以使用另一个 excel 编写包或将 NA 值转换为空白,例如 df[] <- lapply(df, function(x) {x[is.na(x)] <- "";x})
  • 我无法理解反对票。我想有些人会知道怎么做,这对其他用户来说可能很重要和有用。我已经在 openxlsx github 上询问过,如果不存在该选项,我将发送一个功能请求。

标签: r excel na


【解决方案1】:

我无法理解反对票。我想有些人会知道如何只使用一个选项来做到这一点,而无需手动转换每个 NA。

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

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

如果有人感兴趣,如果您使用

更新到开发版本
 devtools::install_github("awalker89/openxlsx")

您将获得对此功能的支持。

现在的默认行为是将 NA 转换为空白 如果我们想要#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))

【讨论】:

    【解决方案2】:

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

    要解决此问题,请在导出文件之前将文件中的所有 NaN 实例替换为 NA

    df[is.na(df)] = NA

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

    见:How to replace NaN value with zero in a huge data frame?

    【讨论】:

      猜你喜欢
      • 2018-06-12
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 2021-09-19
      • 2018-05-04
      • 1970-01-01
      • 2023-02-26
      • 2019-03-24
      相关资源
      最近更新 更多