On 22/05/2012 22:26, Yihui Xie wrote:
I did not use delayedAssign() directly; I was using lazyLoad() and
.Random.seed was saved in a database. The real story out there is the
caching of my knitr package -- lazyLoad() was used to speed up the
compilation of Sweave documents.
I know lazyLoad() is supposed to be used only by R itself, but it is
very helpful for the purpose of caching as well.
Or is it possible to change the code in src/main/RNG.c so that the
seed is force()d if it is a promise?
It is possible, but we need to be convinced that it is desirable. The
main point is that you should not be setting .Random.seed (see its help
page), and all the ways R itself sets it create a object of the correct
internal type. The test is there because of people who failed to follow
the advice and set it incorrectly (usually as a double vector).
If you want to make a case for a change, R-devel would be the
appropriate list and you would need to explain in detail why you
thinking setting .Random.seed is appropriate and exactly how you do it.
Anyway, I can use save() and load() in this case instead of lazyLoad()
if the above is not going to happen. Thanks a lot!
Regards,
Yihui
--
Yihui Xie<xieyi...@gmail.com>
Phone: 515-294-2465 Web: http://yihui.name
Department of Statistics, Iowa State University
2215 Snedecor Hall, Ames, IA
On Tue, May 22, 2012 at 12:49 PM,<luke-tier...@uiowa.edu> wrote:
On Tue, 22 May 2012, Yihui Xie wrote:
Hi,
The problem arises when I lazyLoad() the .Random.seed from a
previously saved database. To simplify the process of reproducing the
problem, see the example below:
## this assignment may not really make sense, but illustrates the problem
delayedAssign('.Random.seed', 1L)
typeof(.Random.seed)
# [1] "integer"
rnorm(1)
# Error in rnorm(1) :
# .Random.seed is not an integer vector but of type 'promise'
typeof(.Random.seed)
# [1] "integer"
So there must be an "attribute" "promise" somewhere attached to
.Random.seed, and I cannot find it. The R function typeof() does not
reveal it, but the TYPEOF() function in src/main/RNG.c says it is a
'promise'.
My question is, how to make R use the real value of .Random.seed
instead of complaining about the promise? Thanks!
Siple answer: Don't creat the promise in the first place, i.e. don't
use delayedAssign.
What is the real context where this arises? Knowing that may help us
decide whether the internals should address this possibility.
Best,
luke
Regards,
Yihui
--
Yihui Xie<xieyi...@gmail.com>
Phone: 515-294-2465 Web: http://yihui.name
Department of Statistics, Iowa State University
2215 Snedecor Hall, Ames, IA
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
--
Luke Tierney
Chair, Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tier...@uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
--
Brian D. Ripley, rip...@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
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.