Hello everybody, I'm trying to use a if-statment on a function. For a better understanding I want to present a small example: FUN=mean # could also be median,sd or any other function if (FUN == mean) plot(...) if (FUN == median) plot(...) ... This doesn't work, because FUN is a function. I've already tried to coerce the type of FUN with as.character( ), but that's also not possible. I'm stuck with this task and it is absolutely necessary to give FUN the class of a function. I'm looking forward for any hints, clues or solutions for my problem. So much thanks in advance Etienne
If I understand the problem properly, you want something like this: function(FUN, ...) { FunName <- deparse(substitute(FUN)) if(FunName == "mean") { ... } else if(FunName == "median") { ... } } Using 'switch' is an alternative to 'if'. On 28/06/2010 10:50, Etienne Stockhausen wrote:> Hello everybody, > > I'm trying to use a if-statment on a function. For a better > understanding I want to present a small example: > > FUN=mean # could also be median,sd or any other function > if (FUN == mean) > plot(...) > if (FUN == median) > plot(...) ... > > This doesn't work, because FUN is a function. I've already tried to > coerce the type of FUN with as.character( ), but that's also not > possible. I'm stuck with this task and it is absolutely necessary to > give FUN the class of a function. > I'm looking forward for any hints, clues or solutions for my problem. > > So much thanks in advance > > Etienne > > ______________________________________________ > 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. >-- Patrick Burns pburns at pburns.seanet.com http://www.burns-stat.com (home of 'Some hints for the R beginner' and 'The R Inferno')
On 28/06/2010 5:50 AM, Etienne Stockhausen wrote:> Hello everybody, > > I'm trying to use a if-statment on a function. For a better > understanding I want to present a small example: > > FUN=mean # could also be median,sd or > any other function > if (FUN == mean) > plot(...) > if (FUN == median) > plot(...) > ... > > This doesn't work, because FUN is a function. I've already tried to > coerce the type of FUN with as.character( ), but that's also not > possible. I'm stuck with this task and it is absolutely necessary to > give FUN the class of a function. > I'm looking forward for any hints, clues or solutions for my problem. >You should use identical() to compare two functions: > FUN <- mean > identical(FUN, mean) [1] TRUE > identical(FUN, median) [1] FALSE all.equal() is probably sufficient for your needs, but it will ignore some small differences. Duncan Murdoch