[R] Error: unexpected '<' in "<" when modifying existing functions
Duncan Murdoch
murdoch.duncan at gmail.com
Sat Jan 14 12:43:06 CET 2012
On 12-01-14 6:08 AM, Rui Esteves wrote:
> All of these tries leave to the same result:
> 1) First I defined kmeansnew with the content of kmeans, but leaving
> the<environment: namespace:stats> out.
> Then I run environment(kmeansnew)<- environment(stats::kmeans) at the
> command line.
> 2) kmeansnew<- kmeans() {.... environment(kmeansnew)<-
> environment(stats::kmeans) }
> 3) kmeansnew<- kmeans() {....} environment(kmeansnew)<-
> environment(stats::kmeans)
>
> When I do kmeansnew(iris[-5],4) it returns:
> Error in do_one(nmeth) : object 'R_kmns' not found
>
> 'R_kmns' is a .FORTRAN that is called by the original kmeans().
> it is the same error as if i would just leave<environment:
> namespace:stats> out.
Number 1 is what you should do. When you do that and print kmeansnew in
the console, does it list the environment at the end? What does
environment(kmeansnew) print?
Duncan Murdoch
>
>
>
> On Sat, Jan 14, 2012 at 11:50 AM, Duncan Murdoch
> <murdoch.duncan at gmail.com> wrote:
>> On 12-01-14 3:58 AM, Rui Esteves wrote:
>>>
>>> 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.
>>
>>
>> I think you need to explain what "does not work" means. What did you do,
>> and how do you know it didn't work?
>>
>>>
>>> 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")
>>
>>
>> Don't use load() on a source file. Use load() on a binary file produced by
>> save(). You could save() your working function, but then you can't edit it
>> outside of R. To produce a .R file that you can use in another session,
>> you're going to need to produce the function, then modify the environment,
>> using 2 or 3 above.
>>
>> Duncan Murdoch
More information about the R-help
mailing list