打印数据框时不打印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的主要内容,如果未能解决你的问题,请参考以下文章