On Sun, 24 May 2020, Deepayan Sarkar wrote:
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.
Not in compiling but in the byte code interpreter. It was not handling
active bindings for the loop variable properly. This was fixed
yesterday in R--devel and R-patched, so will be fixed in R 4.0.1.
Best,
luke
-Deepayan
On Sat, May 23, 2020 at 5:45 PM Thomas Friedrichsmeier via R-devel
<r-devel@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@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@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Luke Tierney
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-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel