[R] read.table() and precision?

Moshe Olshansky m_olshansky at yahoo.com
Wed Dec 19 05:45:50 CET 2007


Thank you for your response!

'write.table' writes up to 15 decimal digits which is
not the machine (double) precision but not far from
that - sorry for the misleading comments!

After all I found a way to do what I needed without
using disk or much memory and doing only twice as much
work as I could with unlimited memory, so I will stick
to this approach.

--- Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:

> On Mon, 17 Dec 2007, Moshe Olshansky wrote:
> 
> > Dear List,
> >
> > Following the below question I have a question of
> my
> > own:
> > Suppose that I have large matrices which are
> produced
> > sequentially and must be used sequentially in the
> > reverse order. I do not have enough memory to
> store
> > them and so I would like to write them to disk and
> > then read them. This raises two questions:
> > 1) what is the fastest (and the most economic
> > space-wise) way to do this?
> 
> Using save/load is the simplest.  Don't worry about
> finding better 
> solutions until you know those are not good enough. 
> (serialize / 
> unserialize is another interface to the same
> underlying idea.)
> 
> > 2) functions like write, write.table, etc. write
> the
> > data the way it is printed and this may result in
> a
> > loss of accuracy. Is there any way to prevent
> this,
> > except for setting the "digits" option to a higher
> > value or using format prior to writing the data?
> 
> Do please read the help before making false claims.
> ?write.table says
> 
>       Real and complex numbers are written to the
> maximal possible
>       precision.
> 
> OTOH, ?write says it is a wrapper for cat, whose
> help says
> 
>       'cat' converts numeric/complex elements in the
> same way as 'print'
>       (and not in the same way as 'as.character'
> which is used by the S
>       equivalent), so 'options' '"digits"' and
> '"scipen"' are relevant.
>       However, it uses the minimum field width
> necessary for each
>       element, rather than the same field width for
> all elements.
> 
> so this hints as.character() might be a useful
> preprocessor.
> 
> > Is it possible to write binary files (similar to
> Fortran)?
> 
> See ?writeBin.  save/load by default write binary
> files, but use of 
> writeBin can be faster (and less flexible).
> 
> > Any suggestion will be greatly appreciated.
> 
> Somehow you have missed a great deal of information
> about R I/O.
> Try help.start() and reading the sections the search
> engine shows you 
> that look relevant.
> 
> 
> -- 
> Brian D. Ripley,                 
> ripley at stats.ox.ac.uk
> Professor of Applied Statistics, 
> http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865
> 272861 (self)
> 1 South Parks Road,                     +44 1865
> 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865
> 272595
>



More information about the R-help mailing list