>>>>> "bogdan" == bogdan romocea <[EMAIL PROTECTED]>
>>>>>     on Mon, 13 Dec 2004 12:26:46 -0800 (PST) writes:

    bogdan> A simple for loop does the job. Why not write your own function?

     movsd <- function(series,lag)
     {
     movingsd <- vector(mode="numeric")
     for (i in lag:length(series))
             {
             movingsd[i] <- sd(series[(i-lag+1):i])
             }
     assign("movingsd",movingsd,.GlobalEnv)
     }

    bogdan> This is very efficient: it takes (much) less time to write from
    bogdan> scratch than to look for an existing function.

yes, it's fine, but the assign() line is really something so
much not-recommendable `` I can't let go through '' :

Your  movsd() provides a function with ``side effect'' : it
"suddenly" creates a global variable 'movingsd' {overwriting
another one, if there was one} instead of doing
the most natural thing for an S (or R) function:  *return* it's
computation:

So, please, use instead something like

     movsd <- function(series,lag)
     {
        msd <- vector(mode="numeric")
        for (i in lag:length(series))
        {
                msd[i] <- sd(series[(i-lag+1):i])
        }
        msd
     }

and then things like

    sy1.3 <- movsd(y1, 3)
    sy1.5 <- movsd(y1, 5)
    sy2.5 <- movsd(y2, 5)

etc.

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to