[R] Using a discrete function in nls()

Joseph Kambeitz jkamb at gmx.de
Mon Oct 13 17:24:44 CEST 2008


I am trying to fit a discrete function to my dataset using nls().

fit<-nls(T2~form(SOA,t1weight,t2weight,d1weight), 
start=list(t1weight=1,t2weight=1,d1weight=1), data=data1, trace=TRUE)

The problem is that my function ("form") includes a discrete function 
and in that function I used the variable SOA to define the discrete 
function (see below).

form<-function(SOA,t1weight,t2weight,d1weight){
decay_functionT1_1 <- 0
decay_functionT1_2 <- rep(t1weight,ttime)
decay_functionT1_3 <- t1weight*exp(-x/q)
decay_functionT1_3[decay_functionT1_3<threshold]<- 0
T1 <- c(decay_functionT1_1, decay_functionT1_2, decay_functionT1_3)

decay_functionT2_1 <- rep(0,SOA)
decay_functionT2_2 <- rep (1,ttime)
decay_functionT2_3 <- decay_t2(x1)
decay_functionT2_3[decay_functionT2_3<threshold]<- 0
T2 <- c(decay_functionT2_1, decay_functionT2_2, decay_functionT2_3)

When I call nls() with my function a get an error message:

Error in rep(0, SOA) : invalid 'times' argument

That is propably due to the way nls() calls my function with the 
variable SOA. Can you help me to fix that?



More information about the R-help mailing list