I'm trying to find an interpretation of your parameters: a is the slope, b is the convergence rate, a + c is the limit, but by itself, it seems to mean little. After reparameterizing your function, the problem disappears.
f <- function (x, a,b,c) a + c * exp(-x/abs(b)) nls(y~f(x, a, b, c), data=dt, start=list(a=1, b=75, c=-5), trace=TRUE)
However, the value of c looks very, very high: this is probably why the model initially did not converge.
Nonlinear regression model model: y ~ f(x, a, b, c) data: dt abc 1.006e+00 3.351e+00 -1.589e+08 residual sum-of-squares: 7.909e-05 Number of iterations to convergence: 9 Achieved convergence tolerance: 2.232e-06
Here is another, more reasonable parameterization of the same function.
g <- function (x, a,b,c) a * (1-exp(-(xc)/abs(b))) nls(y~g(x, a, b, c), data=dt, start=list(a=1, b=75, c=-5), trace=TRUE) Nonlinear regression model model: y ~ g(x, a, b, c) data: dt abc 1.006 3.351 63.257 residual sum-of-squares: 7.909e-05 Number of iterations to convergence: 10 Achieved convergence tolerance: 1.782e-06