12

When I loaded package debug to debug a script with zoo objects, I got trouble: function index from zoo got masked by debug package. How can I unmask index? In general, how to deal with these name colliding problems? We just do not use debug package with `zoo'?

smci
  • 32,567
  • 20
  • 113
  • 146
ahala
  • 4,683
  • 5
  • 27
  • 36

3 Answers3

15

You can detach the package which has masked functions and then reattach it. It will regain precedence in the search path:

detach("package:zoo")
library("zoo")

In the future, if you want to attach a package while preventing it from masking other functions, you can specify its position in the search path with an arbitrary large number:

library("debug", pos = .Machine$integer.max)
Lionel Henry
  • 6,652
  • 27
  • 33
11

Exported symbols are always identifiable with the :: operator:

zoo::index

Hidden functions not declared in the namespace can still be accessed using ::: (triple-colon), and example would be

zoo:::.onLoad

which you can see even though it is not exported.

Dirk Eddelbuettel
  • 360,940
  • 56
  • 644
  • 725
  • 1
    On the other hand this is the reason why setting system<-function(){} does not magically make R secure. – mbq Jul 13 '10 at 23:32
  • thanks. I can temperarily set index<-zoo::index to work around this problem without changing my original script. It seems some packages just do not work together. – ahala Jul 14 '10 at 02:10
4

Its only masked to you but its not masked to zoo so when a zoo function tries to use index it will still find its own index first.

zoo also has a time.zoo method so if z is a zoo object you can use time(z) in place of index(z).

Finally you can always refer to zoo::index to make sure you get the one in zoo.

G. Grothendieck
  • 531
  • 2
  • 2
  • thanks. time.zoo will work but I dont want to change my original script. And index(zooobject) reports error in my case. Apperently R doesnot know index.zoo should be called on zooobject. – ahala Jul 14 '10 at 02:07
  • If you load zoo after loading debug/mvbutils rather than the other way around then the index in zoo will be the one you get by default rather than the one in debug/mvbutils. – G. Grothendieck Jul 14 '10 at 09:03