[Rd] dput()
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Sat Feb 29 18:21:46 CET 2020
On 29/02/2020 4:19 a.m., Ben Bolker wrote:
>
> I think Robin knows about FAQ 7.31/floating point (author of
> 'Brobdingnag', among other numerical packages). I agree that this is
> surprising (to me).
>
> To reframe this question: is there way to get an *exact* ASCII
> representation of a numeric value (i.e., guaranteeing the restored value
> is identical() to the original) ?
>
> .deparseOpts has
>
> ‘"digits17"’: Real and finite complex numbers are output using
> format ‘"%.17g"’ which may give more precision than the
> default (but the output will depend on the platform and there
> may be loss of precision when read back).
>
> ... but this still doesn't guarantee that all precision is kept.
"Using control = c("all", "hexNumeric") comes closest to making
deparse() an inverse of parse(), as representing double and complex
numbers as decimals may well not be exact. However, not all objects are
deparse-able even with this option. A warning will be issued if the
function recognizes that it is being asked to do the impossible."
>
> Maybe
>
> saveRDS(x,textConnection("out","w"),ascii=TRUE)
> identical(x,as.numeric(out[length(out)])) ## TRUE
>
> ?
>
>
>
>
> On 2020-02-29 2:42 a.m., Rui Barradas 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
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
More information about the R-devel
mailing list