Thank you both. 1) As Duncan said, if I leave <environment: namespace:stats> out, it will not work since it is using .C and .Fortran functions that kmeans calls. I 2) don`t know how to use the as.environment() (I did not understood by reading the help).
3) Setting environment(kmeansnew) <- environment(stats::kmeans) does not work as well. 4) Using fix() works, but then I don`t know how to store just the function in an external file. To use it in another computer, for example. If I use save(myfunc,"myFile.R", ASCII=TRUE) it doesn't work when I try to load it again using myfunc=load("myFile.R") Rui On Sat, Jan 14, 2012 at 3:22 AM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > On 12-01-13 8:05 PM, Peter Langfelder wrote: >> >> On Fri, Jan 13, 2012 at 4:57 PM, Rui Esteves<ruimax...@gmail.com> wrote: >>> >>> Hi. >>> I am trying to modify kmeans function. >>> It seems that is failing something obvious with the workspace. >>> I am a newbie and here is my code: >> >> >>>> <environment: namespace:stats> >>> >>> Error: unexpected '<' in "<" >> >> >> Do not include the last line >> >> <environment: namespace:stats> >> >> it is not part of the function definition. Simply leave it out and >> your function will be defined in the user workspace (a.k.a. global >> environment). > > > That's only partly right. Leaving it off will define the function in the > global environment, but the definition might not work, because that's where > it will look up variables, and the original function would look them up in > the stats namespace. I don't know if that will matter, but it might lead to > tricky bugs. > > What you should do when modifying a function from a package is set the > environment to the same environment a function in the package would normally > get, i.e. to the stats namespace. I think the as.environment() function can > do this, but I always forget the syntax; an easier way is the following: > > Create the new function: > > kmeansnew <- function (...) ... > > Set its environment the same as the old one: > > environment(kmeansnew) <- environment(stats::kmeans) > > BTW, if you use the fix() function to get a copy for editing, it will do > this for you automatically. > > Duncan Murdoch > > ______________________________________________ R-help@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.