[R] Beginners problem

Peter Dalgaard p.dalgaard at biostat.ku.dk
Mon Oct 4 17:50:31 CEST 2004


Rolf Wester <rolf.wester at ilt.fraunhofer.de> writes:

> Hi,
> 
> I'm new to R and have a problem with a little test program (see
> below). Why doesn't <<- in function rk4
> assign the new value to y so that it is seen in rktest. I thought that
> <<- does exactly this. But it seems that I
> didn't get it right. I would be very appreciative for an explanation
> of that behaviour of <<-. I know how to
> write the whole thing so that it works (return the updated y to
> rktest) but I would like to learn how variable scope
> in R works.

R has lexical scope and rk4() is not lexically scoped in rktest(). I
believe that there's a rather thorough discussion of these matters in
the FAQ.

> rk4 <- function(x,y,f,h) {
....
>   y <<- y + h/6.0*(k1 + 2.0*k2 + 2.0*k3 + k4))
> }
> 
> rkf <- function(x,y) {
>   -y
> }
> 
> rktest <- function(){
>   y <- 1.0
>   x <- 0.0
>   h <- 0.1
>   for(i in 1:10) {
>     rk4(x,y,rkf,h)
>     print(y)
>   }
> }
> 
> rktest()


-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907




More information about the R-help mailing list