2010-07-13 4 views
10

Cuando cargué empaquetar debug para depurar un script con zoo objetos, tengo problemas: la función de indexzoo obtuve enmascarados por debug paquete. ¿Cómo puedo desenmascarar index? En general, ¿cómo lidiar con estos problemas de colisión de nombres? ¿Simplemente no usamos el paquete debug con `zoo '?cómo desenmascarar una función en R

Respuesta

10

símbolos exportados son siempre identificable con la :: operador:

zoo::index 

funciones ocultas no declaradas en el espacio de nombres todavía se puede acceder mediante ::: (triple-colon), y el ejemplo serían

zoo:::.onLoad 

que puede ver aunque no se haya exportado.

+1

Por otra parte, esta es la razón por la cual el sistema de configuración <-function() {} no hace que R sea mágicamente seguro. – mbq

+0

gracias. Puedo configurar temáticamente índice <-zoo :: index para evitar este problema sin cambiar mi script original. Parece que algunos paquetes simplemente no funcionan juntos. – ahala

4

Está enmascarado para usted, pero no está enmascarado para el zoológico, por lo que cuando una función del zoológico intenta usar el índice, todavía encontrará primero su propio índice.

zoo también tiene un método time.zoo así que si z es un objeto de zoológico puedes usar el tiempo (z) en lugar del índice (z).

Por último, siempre puedes consultar zoo :: index para asegurarte de obtener el que está en el zoológico.

+0

gracias. time.zoo funcionará pero no quiero cambiar mi script original. Y el índice (zooobject) informa un error en mi caso. Aparentemente, R no conoce el índice.zoo debe invocarse en zooobject. – ahala

+0

Si carga zoológico después de cargar errores/mvbutils en lugar de al revés, entonces el índice en el zoológico será el que obtenga de manera predeterminada en lugar de uno en depuración/mvbutils. –

10

Puede descargar el paquete que tiene funciones enmascaradas y luego volver a cargarlo. Se recuperará la precedencia, en el searchpath:

unloadNamespace("zoo") 
library("zoo") 

En el futuro, si se desea cargar un paquete mientras evitando que enmascarar otras funciones, puede especificar su posición en la ruta de búsqueda con un número grande arbitraria:

library("debug", pos = .Machine$integer.max) 
Cuestiones relacionadas