Sorry, I'm stuck. :)
I am writing a function, which would fit either one linear model or another
one, depending on its argument model.type.
And I don't want to use several if's, because R allows doing it with
much
more beauty.
That is I am looking for prettier alternative to the following
AB2C<-function(a,b,model.type="S") { # or HK, and return NULL if
this
argument has any other value
[ do some stuff]
if(model.type=="S") model<-lm( [s.model formula] )
else if (model.type == "HK") model<-lm([hk.model formula])
else model<-NULL
return(model)
}
I was looking at "switch", but didn't come to solution. Sorry
<:)
--
View this message in context:
http://www.nabble.com/Please%2C-remind-a-function-name-tf3797444.html#a10741597
Sent from the R help mailing list archive at Nabble.com.
You could use the class dispatching mechanism:
mymodel <- function(a, b, method = "S") {
.Class <- method
NextMethod("mymodel")
}
mymodel.S <- function(a, b, method = "S") cat("S:", a, b,
method, "\n")
mymodel.HK <- function(a, b, method = "S") cat("HK:", a,
b, method, "\n")
mymodel(1:3, 1:4)
mymodel(1:3, 1:4, "S")
mymodel(1:3, 1:4, "HK")
On 5/22/07, Vladimir Eremeev <wl2776 at gmail.com>
wrote:>
> Sorry, I'm stuck. :)
>
> I am writing a function, which would fit either one linear model or another
> one, depending on its argument model.type.
> And I don't want to use several if's, because R allows doing it
with much
> more beauty.
>
> That is I am looking for prettier alternative to the following
>
> AB2C<-function(a,b,model.type="S") { # or HK, and return NULL
if this
> argument has any other value
> [ do some stuff]
>
> if(model.type=="S") model<-lm( [s.model formula] )
> else if (model.type == "HK") model<-lm([hk.model formula])
> else model<-NULL
>
> return(model)
> }
>
> I was looking at "switch", but didn't come to solution. Sorry
<:)
>
> --
> View this message in context:
http://www.nabble.com/Please%2C-remind-a-function-name-tf3797444.html#a10741597
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
>
Vladimir Eremeev wrote:> Sorry, I'm stuck. :) > > I am writing a function, which would fit either one linear model or another > one, depending on its argument model.type. > And I don't want to use several if's, because R allows doing it with much > more beauty. > > That is I am looking for prettier alternative to the following > > AB2C<-function(a,b,model.type="S") { # or HK, and return NULL if this > argument has any other value > [ do some stuff] > > if(model.type=="S") model<-lm( [s.model formula] ) > else if (model.type == "HK") model<-lm([hk.model formula]) > else model<-NULL > > return(model) > } > > I was looking at "switch", but didn't come to solution. Sorry <:Er, what's wrong with model <- switch(model.type, S = lm( [s.model formula] ), HK = lm([hk.model formula] )) ?