Foro de debate

Masking Error

Masking Error

de David Martínez Briseño -
Número de respuestas: 4

Hola,

Tengo conocimientos básicos de r. Estoy tratando de cargar una serie de librerías pero me mandan algunos mensajes de error.

Las librerías son:

rm(list=ls(all=TRUE))
library(foreign)
library(plyr)
library(car)
library(reshape)
library(psych)
library(boot)
library(pastecs)

Al ejecutarlas salen estos mensajes en reshape, psych y boot:

> rm(list=ls(all=TRUE))
> library(foreign)
> library(plyr)
> library(car)
> library(reshape)

Attaching package: ‘reshape’

The following objects are masked from ‘package:plyr’:

    rename, round_any


> library(psych)

Attaching package: ‘psych’

The following object is masked from ‘package:car’:

    logit

> library(boot)

Attaching package: ‘boot’

The following object is masked from ‘package:psych’:

    logit

The following object is masked from ‘package:car’:

    logit

> library(pastecs)
>

¿Qué significa que un objeto esté masked? ¿Cómo lo puedo solucionar?


Agradezco su ayuda




En respuesta a David Martínez Briseño

Re: Masking Error

de Manuel Muñoz Márquez -
Buenas: Al cargar reshape te dice que el objeto rename de plyr ha sido enmascarado. Eso significa que ambos paquete han definido un objeto, en este caso una función, con el mismo nombre rename. Es el creador del paquete el que decide el nombre que le pone a los objetos, por tanto, el usuario o usuaria no puede hacer nada al respecto. Al invocar una función se puede especificar el paquete al que pertenece, por ejemplo, plyr::rename llamaría a la función rename del paquete plyr. rename o reshape::rename serían equivalentes. Un saludo.
En respuesta a Manuel Muñoz Márquez

Re: Masking Error

de David Martínez Briseño -

Hola Manuel,

Muchas gracias por la explicación. Está  más claro ahora el origen del problema.

Entonces puedo cargar como hasta ahora los paquetes como lo hice:

library(foreign)
library(plyr)
library(car)
library(reshape)
library(psych)
library(boot)
library(pastecs)


Una vez que vaya a usar el paquete previo a usarlo escribo plyr::rename para que el objeto rename a utilizar sea el rename del paquete plyr
Después si voy a usar el paquete reshape escribo previo a usarlo reshape::rename y el objeto rename que utilizara sera el de reshape y no el de plyr ¿cierto?
¿con la intrucción que me mandaste (paquete::objeto),  se usará el objeto del último paquete que se haya indicado con esta instrucción?

Muchas gracias



En respuesta a David Martínez Briseño

Re: Masking Error

de Manuel Muñoz Márquez -

Buenas:

No exactamente. Al escribir paquete::objeto estás indicando de que paquete (más propiamente hablando de qué espacio de nombres) quieres extraer el objeto, pero eso no tiene efecto sobre las siguientes instrucciones.

Tendrás que usar plyr::rename cada vez que quieras usar el rename del paquete plyr.

El hecho de que no tengas que poner reshape obligatoriamente se debe a que es el segundo paquete que se cargó y por tanto el que se usa en caso de no especificar el espacio de nombres.

Saludos.