[Rd] Surpising behavior when using an active binding as loop index in R 4.0.0
Deepayan Sarkar
deep@y@n@@@rk@r @end|ng |rom gm@||@com
Sun May 24 06:50:16 CEST 2020
A shorter reproducible example:
example(makeActiveBinding)
for (fred in 1:3) { 0 }
ls()
Both problems go away if you first do
compiler::enableJIT(2)
So looks like a bug in compiling the for loop.
-Deepayan
On Sat, May 23, 2020 at 5:45 PM Thomas Friedrichsmeier via R-devel
<r-devel using r-project.org> wrote:
>
> Possibly just a symptom of the earlier behavior, but I'll amend my
> example, below, with an even more disturbing observation:
>
> Am Sat, 23 May 2020 13:19:24 +0200
> schrieb Thomas Friedrichsmeier via R-devel <r-devel using r-project.org>:
> [...]
> > Consider the code below:
> >
> > makeActiveBinding("i",
> > function(value) {
> > if (missing(value)) {
> > x
> > } else {
> > print("set")
> > x <<- value
> > }
> > }, globalenv())
> >
> > i <- 1 # output "set"
> > print(i) # output [1] 1
> >
> > # Surprising behavior starts here:
> > for(i in 2:3) print(i) # output [1] "set"
> > # NULL
> > # NULL
> >
> > print(i) # output NULL
> > print(x) # output NULL
> >
> > i <- 4 # output "set"
> > print(i) # ouput [1] 4
> > print(x) # ouput [1] 4
>
> ls()
> # Error in ls() :
> # Value of SET_STRING_ELT() must be a 'CHARSXP' not a 'NULL'
>
> Regards
> Thomas
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list