Hello! I need to find a simple scalar value: Scal = ((1/R) - T) / (P - T), where R, T, and P are vectors in a data.frame. Please, can anyone tell me how to solve that in R? Best, PM
You probably need to look up on how to write functions. Try scal.fn <- function(P, R, T){ out <- ( 1/R - T ) / ( P - T ) return(out) } Here is a fake example: df <- cbind.data.frame( P=rnorm(10), R=rnorm(10), T=rnorm(10) ) scal.fn( df$P, df$R, df$T ) Or are you trying to solve other parameters given scal values? If so, try having a look at functions like uniroot(). Regards, Adai On 16/08/2010 11:48, Petar Milin wrote:> Hello! > I need to find a simple scalar value: > Scal = ((1/R) - T) / (P - T), > where R, T, and P are vectors in a data.frame. > > Please, can anyone tell me how to solve that in R? > > Best, > PM > > ______________________________________________ > R-help at 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.
Thanks for the answer! However, if I would have scal.fn() like below, how would I apply uniroot() or optimize() or the like? Best, PM On 16/08/10 13:24, Adaikalavan Ramasamy wrote:> You probably need to look up on how to write functions. > > Try > > scal.fn <- function(P, R, T){ > out <- ( 1/R - T ) / ( P - T ) > return(out) > } > > Here is a fake example: > > df <- cbind.data.frame( P=rnorm(10), R=rnorm(10), T=rnorm(10) ) > scal.fn( df$P, df$R, df$T ) > > Or are you trying to solve other parameters given scal values? If so, > try having a look at functions like uniroot(). > > Regards, Adai > > > On 16/08/2010 11:48, Petar Milin wrote: >> Hello! >> I need to find a simple scalar value: >> Scal = ((1/R) - T) / (P - T), >> where R, T, and P are vectors in a data.frame. >> >> Please, can anyone tell me how to solve that in R? >> >> Best, >> PM >> >> ______________________________________________ >> R-help at 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. > >
Your best option is to read the relevant help files. A simple (untested) example to find R when P, T and scal.fn=Z is given, is to do this: my.fun <- function(P, R, T, Z) scal.fn(P, R, T) - Z uniroot( fn, R=rr, T=tt, Z=zz, lower=-1000000, upper=1000000 )$root You have to make an intelligent guess on the upper and lower ranges for the parameter R. I have used +/- 1 million as a silly example. HOWEVER, I do not think this works when P,R,T,Z are scalars. Try it to be sure. If not, then you may have to write a for or apply loop. Regards, Adai On 16/08/2010 13:19, Petar Milin wrote:> Thanks for the answer! > However, if I would have scal.fn() like below, how would I apply > uniroot() or optimize() or the like? > > Best, > PM > > On 16/08/10 13:24, Adaikalavan Ramasamy wrote: >> You probably need to look up on how to write functions. >> >> Try >> >> scal.fn<- function(P, R, T){ >> out<- ( 1/R - T ) / ( P - T ) >> return(out) >> } >> >> Here is a fake example: >> >> df<- cbind.data.frame( P=rnorm(10), R=rnorm(10), T=rnorm(10) ) >> scal.fn( df$P, df$R, df$T ) >> >> Or are you trying to solve other parameters given scal values? If so, >> try having a look at functions like uniroot(). >> >> Regards, Adai >> >> >> On 16/08/2010 11:48, Petar Milin wrote: >>> Hello! >>> I need to find a simple scalar value: >>> Scal = ((1/R) - T) / (P - T), >>> where R, T, and P are vectors in a data.frame. >>> >>> Please, can anyone tell me how to solve that in R? >>> >>> Best, >>> PM >>> >>> ______________________________________________ >>> R-help at 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. >> >>