我有NAs的对角矩阵和我想要隐藏的零.
na.print =""工作正常,但是零.print ="." 似乎把0.00视为!= 0?
这是一个打印输出的可运行示例,因此您可以看到我的意思:
x <- matrix(c(0.01, NA, NA, NA, 0.00, 0.00, NA, NA, 0.00, 0.00, -0.01, NA, 0.00, 0.00, 0.00, 0.00), nrow=4, byrow=TRUE)
x
[,1] [,2] [,3] [,4]
[1,] 0.01 NA NA NA
[2,] 0.00 0 NA NA
[3,] 0.00 0 -0.01 NA
[4,] 0.00 0 0.00 0
print.table(x, na.print="", zero.print=".")
[,1] [,2] [,3] [,4]
[1,] 0.01
[2,] 0.00 0.00
[3,] 0.00 0.00 -0.01
[4,] 0.00 0.00 0.00 0.00
Run Code Online (Sandbox Code Playgroud)
按照下面的有用答案(谢谢大家!),并基于print.table中的显式选择而不是zero.print项目中的任何项目失败(x == round(x)),这里有一个适用的版本浮点.我为数据帧打印任务编写了它,但它适用于矩阵.
print.dataframe <- function (x, digits = getOption("digits"), quote = FALSE, na.print = "", zero.print = "0", justify = "none", ...){
xx <- format(x, digits = digits, justify = justify)
if (any(ina <- is.na(x)))
xx[ina] <- na.print
i0 <- !ina & x == 0
if (zero.print != "0" && any(i0))
xx[i0] <- zero.print
if (is.numeric(x) || is.complex(x)){
print(xx, quote = quote, right = TRUE, ...)
}else{
print(xx, quote = quote, ...)
}
invisible(x)
}
print.dataframe(bob, zero.print = ".", justify="left")
Run Code Online (Sandbox Code Playgroud)
这是一个解决方法:
> print.table(local({x[x==0] <- NA; x}))
[,1] [,2] [,3] [,4]
[1,] 0.01
[2,]
[3,] -0.01
[4,]
Run Code Online (Sandbox Code Playgroud)
如果您需要 NA 和零的不同表达式,那么,
> print(ifelse(is.na(x), "", ifelse(x == 0, ".", x)), quote = FALSE)
[,1] [,2] [,3] [,4]
[1,] 0.01
[2,] . .
[3,] . . -0.01
[4,] . . . .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1777 次 |
| 最近记录: |