Printing numerical matrices

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Printing numerical matrices

Aleš Žiberna-3
Dear useRs!

I athought this was a trival question, however I could not fin dan answer in
the help files for print, format or formatC. I would like to print a
numerical matrix so that all cells (all rows/colums) are printed:
a) with the same number of decimal places (numbers after the decimal
separator)
b) with the same number of numbers (regardless of  ".")
c) with the same number of characters (including "." if present, with
option for ignoring or not the "-" sign)) - if the last character would be
".", it is ommited.

Let say I have a matrix M
     [,1]        [,2]     [,3]       [,4] [,5]
[1,]    1 -0.87330578 14.72961  1.0885293  101
[2,]    2 -0.61406616 13.63638 -0.3124361  102
[3,]    3 -0.03322147 15.15509 -1.6021408  103
[4,]    4  1.58780140 15.00857 -0.1908761  104
[5,]    5  0.75340104 14.80913  0.3210328  105

Which you can get (at least similar) by:
M<- matrix(rnorm(25),ncol=5,nrow=5)
M[,1]<-1:5
M[,3]<-M[,3]+15
M[,5]<-101:105


If I select the number of 3, I want to get:
a)
         [,1]   [,2]   [,3]   [,4]     [,5]
[1,]    1.000 -0.873 14.729  1.088  101.000
[2,]    2.000 -0.614 13.636 -0.312  102.000
[3,]    3.000 -0.033 15.155 -1.602  103.000
[4,]    4.000  1.588 15.009 -0.190  104.000
[5,]    5.000  0.753 14.809  0.321  105.000

b)
        [,1]  [,2] [,3]  [,4]  [,5]
[1,]    1.00 -0.87 14.7  1.09  101
[2,]    2.00 -0.61 13.6 -0.31  102
[3,]    3.00 -0.03 15.2 -1.60  103
[4,]    4.00  1.58 15.0 -0.19  104
[5,]    5.00  0.75 14.8  0.32  105

c) (ignoring "-" sign)
       [,1] [,2] [,3] [,4] [,5]
[1,]    1.0 -0.9   14  1.1  101
[2,]    2.0 -0.6   14 -0.3  102
[3,]    3.0 -0.0   15 -1.6  103
[4,]    4.0  1.6   15 -0.2  104
[5,]    5.0  0.8   15  0.3  105

c) (counting the  "-" sign)
       [,1] [,2] [,3] [,4] [,5]
[1,]    1.0   -1   14  1.1  101
[2,]    2.0   -1   14   -0  102
[3,]    3.0   -0   15   -2  103
[4,]    4.0  1.6   15   -0  104
[5,]    5.0  0.8   15  0.3  105


I would appreciate a solution for any of those options.

Best regards,
Ales

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: Printing numerical matrices

Gabor Grothendieck
Here are a couple of alternatives to try:

noquote(format(round(M,3)))

noquote(apply(round(M,3), 2, format))



On 1/17/06, Aleš Žiberna <[hidden email]> wrote:

> Dear useRs!
>
> I athought this was a trival question, however I could not fin dan answer in
> the help files for print, format or formatC. I would like to print a
> numerical matrix so that all cells (all rows/colums) are printed:
> a)      with the same number of decimal places (numbers after the decimal
> separator)
> b)      with the same number of numbers (regardless of  ".")
> c)      with the same number of characters (including "." if present, with
> option for ignoring or not the "-" sign)) - if the last character would be
> ".", it is ommited.
>
> Let say I have a matrix M
>     [,1]        [,2]     [,3]       [,4] [,5]
> [1,]    1 -0.87330578 14.72961  1.0885293  101
> [2,]    2 -0.61406616 13.63638 -0.3124361  102
> [3,]    3 -0.03322147 15.15509 -1.6021408  103
> [4,]    4  1.58780140 15.00857 -0.1908761  104
> [5,]    5  0.75340104 14.80913  0.3210328  105
>
> Which you can get (at least similar) by:
> M<- matrix(rnorm(25),ncol=5,nrow=5)
> M[,1]<-1:5
> M[,3]<-M[,3]+15
> M[,5]<-101:105
>
>
> If I select the number of 3, I want to get:
> a)
>         [,1]   [,2]   [,3]   [,4]     [,5]
> [1,]    1.000 -0.873 14.729  1.088  101.000
> [2,]    2.000 -0.614 13.636 -0.312  102.000
> [3,]    3.000 -0.033 15.155 -1.602  103.000
> [4,]    4.000  1.588 15.009 -0.190  104.000
> [5,]    5.000  0.753 14.809  0.321  105.000
>
> b)
>        [,1]  [,2] [,3]  [,4]  [,5]
> [1,]    1.00 -0.87 14.7  1.09  101
> [2,]    2.00 -0.61 13.6 -0.31  102
> [3,]    3.00 -0.03 15.2 -1.60  103
> [4,]    4.00  1.58 15.0 -0.19  104
> [5,]    5.00  0.75 14.8  0.32  105
>
> c) (ignoring "-" sign)
>       [,1] [,2] [,3] [,4] [,5]
> [1,]    1.0 -0.9   14  1.1  101
> [2,]    2.0 -0.6   14 -0.3  102
> [3,]    3.0 -0.0   15 -1.6  103
> [4,]    4.0  1.6   15 -0.2  104
> [5,]    5.0  0.8   15  0.3  105
>
> c) (counting the  "-" sign)
>       [,1] [,2] [,3] [,4] [,5]
> [1,]    1.0   -1   14  1.1  101
> [2,]    2.0   -1   14   -0  102
> [3,]    3.0   -0   15   -2  103
> [4,]    4.0  1.6   15   -0  104
> [5,]    5.0  0.8   15  0.3  105
>
>
> I would appreciate a solution for any of those options.
>
> Best regards,
> Ales
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: Printing numerical matrices

Ales Ziberna-2
Thank you!

That solves my a) problem!

Best,
Ales

-----Original Message-----
From: [hidden email]
[mailto:[hidden email]] On Behalf Of Gabor Grothendieck
Sent: Tuesday, January 17, 2006 4:55 PM
To: Aleš Žiberna
Cc: [hidden email]
Subject: Re: [R] Printing numerical matrices

Here are a couple of alternatives to try:

noquote(format(round(M,3)))

noquote(apply(round(M,3), 2, format))



On 1/17/06, Aleš Žiberna <[hidden email]> wrote:

> Dear useRs!
>
> I athought this was a trival question, however I could not fin dan
> answer in the help files for print, format or formatC. I would like to
> print a numerical matrix so that all cells (all rows/colums) are printed:
> a)      with the same number of decimal places (numbers after the decimal
> separator)
> b)      with the same number of numbers (regardless of  ".")
> c)      with the same number of characters (including "." if present, with
> option for ignoring or not the "-" sign)) - if the last character
> would be ".", it is ommited.
>
> Let say I have a matrix M
>     [,1]        [,2]     [,3]       [,4] [,5]
> [1,]    1 -0.87330578 14.72961  1.0885293  101
> [2,]    2 -0.61406616 13.63638 -0.3124361  102
> [3,]    3 -0.03322147 15.15509 -1.6021408  103
> [4,]    4  1.58780140 15.00857 -0.1908761  104
> [5,]    5  0.75340104 14.80913  0.3210328  105
>
> Which you can get (at least similar) by:
> M<- matrix(rnorm(25),ncol=5,nrow=5)
> M[,1]<-1:5
> M[,3]<-M[,3]+15
> M[,5]<-101:105
>
>
> If I select the number of 3, I want to get:
> a)
>         [,1]   [,2]   [,3]   [,4]     [,5]
> [1,]    1.000 -0.873 14.729  1.088  101.000
> [2,]    2.000 -0.614 13.636 -0.312  102.000
> [3,]    3.000 -0.033 15.155 -1.602  103.000
> [4,]    4.000  1.588 15.009 -0.190  104.000
> [5,]    5.000  0.753 14.809  0.321  105.000
>
> b)
>        [,1]  [,2] [,3]  [,4]  [,5]
> [1,]    1.00 -0.87 14.7  1.09  101
> [2,]    2.00 -0.61 13.6 -0.31  102
> [3,]    3.00 -0.03 15.2 -1.60  103
> [4,]    4.00  1.58 15.0 -0.19  104
> [5,]    5.00  0.75 14.8  0.32  105
>
> c) (ignoring "-" sign)
>       [,1] [,2] [,3] [,4] [,5]
> [1,]    1.0 -0.9   14  1.1  101
> [2,]    2.0 -0.6   14 -0.3  102
> [3,]    3.0 -0.0   15 -1.6  103
> [4,]    4.0  1.6   15 -0.2  104
> [5,]    5.0  0.8   15  0.3  105
>
> c) (counting the  "-" sign)
>       [,1] [,2] [,3] [,4] [,5]
> [1,]    1.0   -1   14  1.1  101
> [2,]    2.0   -1   14   -0  102
> [3,]    3.0   -0   15   -2  103
> [4,]    4.0  1.6   15   -0  104
> [5,]    5.0  0.8   15  0.3  105
>
>
> I would appreciate a solution for any of those options.
>
> Best regards,
> Ales
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html