Assigning to a list within a loop (PR#175)
wvenable@arcola.stats.adelaide.edu.au
wvenable@arcola.stats.adelaide.edu.au
Thu, 22 Apr 1999 05:45:26 +0200 (MET DST)
We noticed this bug in more complex code, but this succinctly
describes the phenomenon.
If you do not re-initialize a each time in the following loop,
the final value only is assigned to all places when the loop is
complete.
> a <- b <- list()
> for(i in 1:5) {
+ a$alpha <- i
+ b[[i]] <- a
+ }
> unlist(b)
alpha alpha alpha alpha alpha
5 5 5 5 5
If a is re-created each time, however the correct behaviour
happens:
> b <- list()
> for(i in 1:5) {
+ a <- list(alpha = i)
+ b[[i]] <- a
+ }
> unlist(b)
alpha alpha alpha alpha alpha
1 2 3 4 5
> version
_
platform i586-unknown-linux
arch i586
os linux
system i586, linux
status
status.rev 0
major 0
minor 64.0
year 1999
month April
day 8
language R
>
Bill Venables & Berwin Turlach.
--
-----------------------------------------------------------------
Bill Venables, Statistician, CMIS Environmetrics Project.
Physical address: Postal address:
CSIRO Marine Laboratories, PO Box 120,
233 Middle St, Cleveland, Queensland Cleveland, Qld, 4163
AUSTRALIA AUSTRALIA
Telephone: +61 7 3826 7251 Email: Bill.Venables@cmis.csiro.au
Fax: +61 7 3826 7304
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._