打印数据框时不打印NA

Posted

技术标签:

【中文标题】打印数据框时不打印NA【英文标题】:Do not print NA when printing data frame 【发布时间】:2013-10-31 05:32:28 【问题描述】:

对于data frames,没有na.print option。是否有任何解决方法来抑制 NA 的显示?

示例数据框:

df <- data.frame(
       x=c("a","b","c","d"),
       a=c(1,1,1,1),
       b=c(1,1,1,NA),
       c=c(1,1,NA,NA),
       d=c(1,NA,NA,NA))      
df

结果:

  x a  b  c  d
1 a 1  1  1  1
2 b 1  1  1 NA
3 c 1  1 NA NA
4 d 1 NA NA NA

但我想展示:

  x a  b  c  d
1 a 1  1  1  1
2 b 1  1  1
3 c 1  1
4 d 1

【问题讨论】:

警告:确保您和您的读者都不会被误导,认为空白位置要么是“什么都没有”,要么是“零”(Excel 很乐意这样做)。如果这纯粹是为了发表,很好;否则要小心。 【参考方案1】:

您可以用"" 替换缺失值(此技术用于print.dist S3 方法)

cf <- format(dat) ## use format to set other options like digits, justify , ...
cf[is.na(dat)] <- ""
 cf
  x a  b  c  d
1 a 1  1  1  1
2 b 1  1  1   
3 c 1  1      
4 d 1    

【讨论】:

【参考方案2】:

有,但您必须先强制​​转换为矩阵...

print( as.matrix(df) , na.print = "" , quote = FALSE )
     x a b  c  d 
[1,] a 1  1  1  1
[2,] b 1  1  1   
[3,] c 1  1      
[4,] d 1 

如果你愿意,可以把它变成一个小功能......

nona <- function(x)
    print( as.matrix(x) , na.print = "" , quote = FALSE )

【讨论】:

【参考方案3】:

你可以使用write.table:

write.table(dfr,sep="\t",col.names=NA,na="")
""      "x"     "a"     "b"     "c"     "d"
"1"     "a"     1       1       1       1
"2"     "b"     1       1       1       
"3"     "c"     1       1               
"4"     "d"     1   

【讨论】:

以上是关于打印数据框时不打印NA的主要内容,如果未能解决你的问题,请参考以下文章

在 IE/Chrome/Firefox 中打印预览(或打印)时不显示图像

c#调用bartender打印时不显示打印预览吗

NodeJS回调成功时不打印输出

手机调试Android程序出异常时不打印堆栈信息

c ++为啥在指数时不打印所有元素

使用多个线程时不同步的打印消息