Как подавить печать нулей в таблице (zero.print="" не работает)

У меня есть диагональные матрицы с NA и нулями, которые я хочу скрыть.

na.print = "" работает нормально, но zero.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 значения not 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")
9
задан tim 2 August 2012 в 10:06
поделиться