[Rd] dput()

Gabriel Becker g@bembecker @end|ng |rom gm@||@com
Sat Feb 29 10:18:03 CET 2020


Hi Robin,

In the future, questions like this belong on R-help, not R-devel as it is a
basic usage question not a discussion about development of the R language
itself or similar.

That said, ?dput states a number of times that exact deparsing is not
always possible and that dput is not appropriate for what I'm inferring you
may be trying to do with it.  I would not have expected this in particular
to be one of those cases, to be honest, but its within spec. dput is NOT
guaranteed to give back an identical object, in fact according to the docs
in some cases it should be expected not to. As for why dput is doing this ,
I'm not sure if its that some amount off formatting is going on inside
dput, or if its a finite precision issue as suggested by Rui. I think the
former is more consistent with the behavior you're seeing but I don't have
time to dig into the guts of dput right this second.

Either way, If you want exact recreation of the object you have you need to
either run the actual code you used to generate it (on the same data  in
the same environment, etc etc) or serialize it out via saveRDS (or just
save if you must) and then readRDS/load it back in.

I hope that helps.
~G


On Fri, Feb 28, 2020 at 11:43 PM Rui Barradas <ruipbarradas using sapo.pt> wrote:

> Hello,
>
> FAQ 7.31
>
> See also this StackOverflow post:
>
> https://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equal
>
> Hope this helps,
>
> Rui Barradas
>
> Às 00:08 de 29/02/20, robin hankin escreveu:
> > My interpretation of dput.Rd is that dput() gives an exact ASCII form
> > of the internal representation of an R object.  But:
> >
> >   rhankin using cuttlefish:~ $ R --version
> > R version 3.6.2 (2019-12-12) -- "Dark and Stormy Night"
> > Copyright (C) 2019 The R Foundation for Statistical Computing
> > Platform: x86_64-pc-linux-gnu (64-bit)
> >
> > [snip]
> >
> > rhankin using cuttlefish:~ $ R --vanilla --quiet
> >> x <- sum(dbinom(0:20,20,0.35))
> >> dput(x)
> > 1
> >> x-1
> > [1] -4.440892e-16
> >>
> >> x==1
> > [1] FALSE
> >>
> >
> > So, dput(x) gives 1, but x is not equal to 1.  Can anyone advise?
> >
> > ______________________________________________
> > R-devel using r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

	[[alternative HTML version deleted]]



More information about the R-devel mailing list