[R] digits in matrix
Duncan Murdoch
murdoch.duncan at gmail.com
Fri Jan 30 14:51:08 CET 2015
On 30/01/2015 8:17 AM, Knut Krueger wrote:
> Am 30.01.2015 um 12:51 schrieb Duncan Murdoch:
>
> > You are mixing up formatting with storage. Floating point numbers will
> > be displayed without decimals if they are close enough to whole numbers.
> >
> > Duncan Murdoch
> >
>
> Ok, I am talking from display
>
> data = matrix(c(1:16),nrow=4,ncol=4) #create matrix
> data[4,] = data[4,]/3
> data[,4] = data[,4]/3
> #why is it displayed without decimals here:
> data[1:3,1:3]
> #and why is data[1:3,1:3] diplayed with 2 decimals here
> data
>
> and what could be the solution to display data[1:3,1:3] part when data
> is used without decimals, if there are no
The default formatting for matrices uses the same number of decimal
places for all entries in a column. In the first case, none needed any
decimals to get options("digits") worth of precision, so none were
displayed. In the second case, entries in row 4 need 6 decimal places
(on my system, maybe differently on yours) in columns 1, 2, and 4, so
all values in those columns are displayed with 6 decimal places.
If you want formatting to work differently, you can write your own. For
example, if you define
myprint <- function(x, ...) {
result <- sub("[.][0]+", "", format.default(x, ...))
print(noquote(result))
}
then
myprint(data)
might do what you want.
Duncan Murdoch
More information about the R-help
mailing list