[R] Rmpfr into data.frame
Martin Maechler
maechler at stat.math.ethz.ch
Mon Nov 7 12:00:19 CET 2016
>>>>> Troels Ring <tring at gvdnet.dk>
>>>>> on Mon, 7 Nov 2016 10:09:02 +0100 writes:
> Dear friends - Windows, R version 3.2.1
> I wanted to make a ggplot2 using Rmpfr high precision data - but cannot
> make the data into a data.frame, as wanted by ggplot2. Hence
> library(Rmpfr)
> a <- mpfr(1,120)
> b <- mpfr(2,120)
> dff <- data.frame(a=a,b=b)
> elicits errors
> Error in as.data.frame.default(x[[i]], optional = TRUE) :
> cannot force class »structure("mpfr1", package = "Rmpfr")« into
> data.frame
ggplot2 nor any other "R-based" (*) plotting engine can make use
of the extra precision in the mpfr numbers.
So for plotting (and other purposes), there's the asNumeric(.)
function in Rmpfr, which keeps Rmpfr - arrays or matrices.
For the present case (of mpfr-vectors with no attributes), you
can also use as.numeric() :
> (Pi <- Const("pi"))
1 'mpfr' number of precision 120 bits
[1] 3.1415926535897932384626433832795028847
> asNumeric(Pi)
[1] 3.141593
> all.equal(pi, asNumeric(Pi), tol=1e-17)
[1] TRUE
> identical(asNumeric(Pi), as.numeric(Pi))
[1] TRUE
>
and your case
data.frame(a=as.numeric(a), b=as.numeric(b))
As author and maintainer of Rmpfr, I'm curious why you'd be
interested to use high-precision numbers in plots, because even
double precision is usually far from being needed for graphics.
Martin Maechler, ETH Zurich
--
*) in the sense of either relying on "base R"s packages 'graphics' or 'grid';
the latter is used by lattice and ggplot2.
> (my translation of Danish error)
> How can I do it best?
More information about the R-help
mailing list