# [R] R formula language---a min and max function?

David Winsemius dwinsemius at comcast.net
Tue May 4 21:59:58 CEST 2010

```On May 4, 2010, at 3:52 PM, ivo welch wrote:

> thank you, david.  indeed.  works great (almost).  an example for
> anyone else googling this in the future:
>
>> x=1:20
>> y= 2+3*ifelse(x>10, 10, x)+rnorm(20,0,0.01)
>> r1= nls( y~ a+b*pmin(c,x), start=list(a=2, b=3, c=10), trace=TRUE )
> 0.002142 :   2  3 10
> 0.002115 :   2.004  3.000 10.000
> 0.002114 :   2.006  2.999 10.001
> 0.002084 :   2.005  2.999 10.000
> ...
> 0.002079 :   2.005  2.999 10.000
> Error in nls(y ~ a + b * pmin(c, x), start = list(a = 2, b = 3, c =
> 10),  :
>  step factor 0.000488281 reduced below 'minFactor' of 0.000976562
>
> strange error, but unrelated to my question.  will figure this one
> out next.

I get no error. May be difficult to sort out unless you can reproduce
after setting a random seed.

> x=1:20
> y= 2+3*ifelse(x>10, 10, x)+rnorm(20,0,0.01)
> r1= nls( y~ a+b*pmin(c,x), start=list(a=2, b=3, c=10), trace=TRUE )
0.001560045 :   2  3 10
0.001161253 :   2.003824  2.998973 10.000388
0.001161253 :   2.003824  2.998973 10.000388

--
David.

>
> regards,
>
> /iaw
>
>
> On Tue, May 4, 2010 at 3:40 PM, David Winsemius <dwinsemius at comcast.net
> > wrote:
>>
>> On May 4, 2010, at 3:33 PM, ivo welch wrote:
>>
>>> Dear R experts---I would like to estimate a non-linear least squares
>>> expression that looks something like
>>>
>>>  y ~ a+b*min(c,x)
>>>
>>> where a, b, and c are the three parameters.  how do I define a min
>>> function in the formula language of R?  advice appreciated.
>>
>> ?pmin
>>
>>>
>>> sincerely,
>>>
>>> /iaw
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>> David Winsemius, MD
>> West Hartford, CT
>>
>>

David Winsemius, MD
West Hartford, CT

```