[R] bug in nls?
Petr PIKAL
petr.pikal at precheza.cz
Thu Jun 26 13:57:39 CEST 2008
Dear all
Nobody responded to my previous post so far so I try with more offending
subject.
I just encountered a strange problem with nls formula. I tried to use nls
in cycle but I was not successful. I traced the problem to some parse
command.
Here is an example
DF<-data.frame(x=1:10, y=3*(1:10)^.5+rnorm(10))
coef(lm(log(DF[,2])~log(DF[,1])))
(Intercept) log(DF[, 1])
0.7437320 0.6831726
# this works
coef(nls(y~a*x^b, data=DF, start=list(a=3, b=.7)))
a b
2.6412881 0.5545907
# OK, this works too
coef(nls(DF[,2]~a*DF[,1]^b, data=DF, start=list(a=3, b=.7)))
Error in parse(text = x) : unexpected end of input in "~ "
coef(nls(DF[,2]~a*DF[,1]^b, start=list(a=3, b=.7)))
Error in parse(text = x) : unexpected end of input in "~ "
# but this does not
Browse[1]>
debug: mf$formula <- as.formula(paste("~", paste(varNames[varIndex],
collapse = "+")), env = environment(formula))
Browse[1]>
Error in parse(text = x) : unexpected end of input in "~ "
>
Actually the problem is that with calling nls with DF[,n]~... varNames and
varIndex is not correctly specified.
I am not sure if this behaviour is a bug or feature. If it is a feature,
please help me how to call variables from data frame
when using nls inside cycle
for (i in ....) result[i,] <- coef(nls( ...., ))
Thank you
Petr
> sessionInfo()
R version 2.8.0 Under development (unstable) (2008-05-18 r45723)
i386-pc-mingw32
locale:
LC_COLLATE=Czech_Czech Republic.1250;LC_CTYPE=Czech_Czech
Republic.1250;LC_MONETARY=Czech_Czech
Republic.1250;LC_NUMERIC=C;LC_TIME=Czech_Czech Republic.1250
attached base packages:
[1] stats grDevices datasets utils graphics methods base
other attached packages:
[1] nlme_3.1-88 lattice_0.17-7 fun_0.1
loaded via a namespace (and not attached):
[1] grid_2.8.0 tools_2.8.0
Petr Pikal
petr.pikal at precheza.cz
724008364, 581252140, 581252257
More information about the R-help
mailing list