我使用openxlsx包来读写Excel文件。
当我将表格导出到Excel时,我注意到了 write.xlsx(MyData,file =" MyFile.xlsx") 在Excel上打开文件时, NAs 显示为 #NUM!。
有没有选择将其导出为空白? 我正在使用谷歌搜索和尝试选择,如showNA或keepNA,但他们似乎没有任何影响。
答案 0 :(得分:3)
我无法理解downvote。我认为有些人只知道如何使用一个选项,而不需要手动改变每个NA。
我认为这对其他用户来说非常重要和有用,我也曾在openxlsx的github开发页面上询问过,他们回答说:
https://github.com/awalker89/openxlsx/issues/108#issuecomment-125142950
如果有人感兴趣,如果您使用
更新到开发版本 devtools::install_github("awalker89/openxlsx")
您将获得此功能的支持。
现在的默认行为是将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))
答案 1 :(得分:2)
好问题!一个我一直在看的人。我相信默认行为是将NA
值输出为空白。但是,正如您在示例代码中显示的那样,您有NA
和NaN
值。列中存在一个或多个NaN
值将导致该列中的所有NA
和NaN
值在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?