gpt4 book ai didi

r - 是否可以在数据框中不显示 NA?

转载 作者:行者123 更新时间:2023-12-02 08:48:32 24 4
gpt4 key购买 nike

我正在尝试创建一个 data.frame,其中一些单元格有缺失值。我想知道是否有任何方法可以隐藏 NA,而不是显示 NA?我想要的基本上就像一个方差分析表,如下所示。

 x = rnorm(40)    
y = rep(1:2, each=20)
z = rep(c(1,2,1,2), each=10)
model1 = lm(x~y * z)
model2 = lm(x~y + z)
anova(model1, model2)

#Analysis of Variance Table
#Model 1: x ~ y * z
#Model 2: x ~ y + z
#Res.Df RSS Df Sum of Sq F Pr(>F)
#1 36 38.931
#2 37 39.248 -1 -0.31705 0.2932 0.5915

输出如上。如果您尝试访问那些空白单元格,您将得到 NA

 anova(model1, model2)[1,4]
#[1] NA

提前致谢!

最佳答案

print.anova 通过使用 print.defaultna.print 选项工作,如下所示:

> x <- matrix(c(101:111/100, NA), nrow=3)
> print(x, na.print="")
[,1] [,2] [,3] [,4]
[1,] 1.01 1.04 1.07 1.10
[2,] 1.02 1.05 1.08 1.11
[3,] 1.03 1.06 1.09

但是,这只适用于矩阵,不适用于数据框。

对于数据框,将 NA 替换为 ""的建议很好,但失去了通常的数字打印;您可以在替换前使用 format.data.frame 来做到这一点。阅读 print.data.frame 函数了解更多详情。这样做,您也可以替换为 NA,然后使用 na.print 选项,如上所述。

> y <- as.data.frame(x)
> m <- as.matrix(format.data.frame(y, digits = NULL, na.encode = FALSE))
> m[is.na(y)] <- NA
> print(m, na.print="", quote=FALSE)
V1 V2 V3 V4
1 1.01 1.04 1.07 1.10
2 1.02 1.05 1.08 1.11
3 1.03 1.06 1.09

看看第四列中的数字是如何排列的?与此相比。

> z <- y
> z[is.na(z)] <- ""
> print(z)
V1 V2 V3 V4
1 1.01 1.04 1.07 1.1
2 1.02 1.05 1.08 1.11
3 1.03 1.06 1.09

关于r - 是否可以在数据框中不显示 NA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10491092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com