Dear R friends,

I have developed the function here below attached.

Strangely, when I apply it to a vector it behaves very differently than when I 
apply it separately to each value of the vector itself.

Is there any reason why?

Here is the function:

# TODO: Add comment
# 
# Author: ct529, 3 Sep 2009, 08:42:50,mspline.R
###############################################################################

mspline<-function(i=1,x=0,k=1,t=c(0,1)){
        # x is the variable
        # i is the index of the member of the Mspline family
        # t is the vector of knots. t[h] is the h-th knot.
        # k is the Mspline degree
        
        I<-i
        
        if(identical(k,1)){
                
                if( x<t[i+1] && x>=t[i] ){
                        td<-t[i+1]-t[i]                         
                        M<-1/td                 
                }else{
                        M<-0
                }
                
        }else if (k>1) {
                
                kk<-(k-1)
                
                if (x>=t[i] && x<t[i+k]){
                        M<-k*((x-t[i])*mspline(i=I,x=x,k=kk,t=t)+(t[i+k]-
x)*mspline(i=(I+1),x=x,k=kk,t=t))/((k-1)*(t[i+k]-t[i]))
                } else if (x<t[i] || x>=t[i+k]){
                        M<-0
                }
        }
                
        return(M)       
}

For example:

source("./functions/mspline.R")

X<-seq(0,1,0.1)
Q<-c(0,0,0,0.3,0.5,0.6,1,1,1)
II<-c(1,2,3,4,5,6)

plot(c(0,1),c(0,24),type="p",col="white",cex=".4",pch=".")

for (h in II) {
        
        y<-vector()
        
        for (xxxx in X) {

                y<-append(y,mspline(i=h,x=xxxx,k=3,t=Q))
                
        }
        
        points(X,y,type="l",col="green")
        
}

works very differently from using a vectorial approach, that is substituting 
the inner for iteration with the expression:

y<-mspline(i=h,x=X,k=3,t=Q)

Regards
-- 
Corrado Topi

Global Climate Change & Biodiversity Indicators
Area 18,Department of Biology
University of York, York, YO10 5YW, UK
Phone: + 44 (0) 1904 328645, E-mail: ct...@york.ac.uk

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to