Skip to content
Prev 343694 / 398498 Next

Overwriting a procedure

If you have more than one version of fixx(), then the one that is used is
the one that comes first in the search path. The search path is revealed
by the search() function. So if you can learn to control the search path,
then you can control which version of fixx() is used. That would be my
initial approach.

As an aside, you can define your first version of fixx() more simply as

  fixx <- function(x) list(x=x)

and the second more simply as

fixx <- function(x) {
 x[,6]<-x[,5]^2/10
 list(x=x)
}

Using return() is completely unnecessary (but of course ok if preferred as
a matter of programming style).


Of course, this all assumes you truly need two different functions with
the same name. I would think that is unlikely, but since there?s no
indication of what determines which one should be used, I can?t say.
However, there must be some criterion that determines that the second
version should be used, so perhaps


fixx <- function(x, criterion) {
  ## criterion must be a logical value of length 1
  if (criterion) x[,6]<-x[,5]^2/10
  list(x=x)
}

would work.