我有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
按照下面的有用答案(谢谢大家!),并基于print.table中的显式选择,以及表中任何项失败的零.print项(x == round(x)),这是一个版本它适用于floating.point。我为数据框打印任务编写了它,但它适用于矩阵。
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")
答案 0 :(得分:4)
这是一种解决方法:
> print.table(local({x[x==0] <- NA; x}))
[,1] [,2] [,3] [,4]
[1,] 0.01
[2,]
[3,] -0.01
[4,]
如果您需要NA和零的不同表达式,那么,
> print(ifelse(is.na(x), "", ifelse(x == 0, ".", x)), quote = FALSE)
[,1] [,2] [,3] [,4]
[1,] 0.01
[2,] . .
[3,] . . -0.01
[4,] . . . .
答案 1 :(得分:3)
Per Andrie的意见和建议这不是print.table
代码中的错误。向print.table
提供需要table
的矩阵是一个问题。正如安德里所指出的那样,所有投注都与预期产量有关。如果你向print.table
添加一行额外的代码(见下文),它将对你有用(注意我称之为printmatrix)。
printmatrix <-
function (x, digits = getOption("digits"), quote = FALSE, na.print = "",
zero.print = "0", justify = "none", ...)
{
xx <- format(unclass(x), digits = digits, justify = justify)
if (any(ina <- is.na(x)))
xx[ina] <- na.print
if (zero.print != "0" && any(i0 <- !ina & x == 0) && all(x ==
round(x)))
xx[i0] <- sub("0", zero.print, xx[i0])
xx[x == 0] <- zero.print #the line I added
if (is.numeric(x) || is.complex(x))
print(xx, quote = quote, right = TRUE, ...)
else print(xx, quote = quote, ...)
invisible(x)
}
printmatrix(x, zero.print = ".")