quitar - Al escribir mi propio paquete R, parece que no consigo que otros paquetes se importen correctamente
leer datos en r (2)
Como una solución temporal para el error MATCH, he tenido éxito al enumerar el paquete del zoo
en la sección Depends:
del archivo de DESCRIPTION
del paquete.
Muy bien, el primer intento de escribir un paquete R y estoy atascado. Así es como creo el paquete:
package.skeleton("pkg",code_files=some.filenames)
roxygenize("okg")
Estoy usando roxygen2 y tengo las siguientes importaciones en mi archivo "pkg-package.R":
@import data.table zoo lubridate
Desde una terminal, luego corro:
R CMD build pkg
R CMD check pkg
R CMD install pkg
Durante la fase de verificación, recibo las siguientes advertencias:
** preparando el paquete para la carga perezosa
Advertencia: reemplazar la importación anterior ''hora'' al cargar ''lubricado''
Advertencia: reemplazar la importación anterior ''mday'' al cargar ''lubridate''
Advertencia: reemplazar el ''mes'' anterior de importación al cargar ''lubridate''
Advertencia: reemplazar la importación anterior ''wday'' al cargar ''lubridate''
Advertencia: reemplazar la ''semana'' de importación anterior al cargar ''lubridate''
Advertencia: reemplazar la importación anterior ''yday'' al cargar ''lubridate''
Advertencia: reemplazar el ''año'' de importación anterior al cargar ''lubricado''
** ayuda
* instalando índices de ayuda
** construcción de índices de paquetes ...
** prueba si el paquete instalado puede ser cargado
Mensajes de advertencia:
1: sustitución de importación anterior ''hora'' al cargar ''lubricado''
2: reemplazar la importación anterior ''mday'' al cargar ''lubridate''
3: reemplazar el ''mes'' anterior de importación al cargar ''lubridate''
4: reemplazar la importación anterior ''wday'' al cargar ''lubridate''
5: reemplazo de la ''semana'' anterior de importación al cargar ''lubridate''
6: reemplazar la importación anterior ''yday'' al cargar ''lubridate''
7: reemplazar el ''año'' de importación anterior al cargar ''lubricado''
Realmente no estoy seguro de qué hacer con ellos, pero parecen advertencias típicas de sobrescribir las cosas en el espacio de nombres. En cualquier caso, puedo instalar el paquete, pero esto es lo que sucede cuando trato de usarlo:
biblioteca (pkg)
Anulando los métodos + y - para POSIXt, Date y difftime
Mensajes de advertencia:
1: sustitución de importación anterior ''hora'' al cargar ''lubricado''
2: reemplazar la importación anterior ''mday'' al cargar ''lubridate''
3: reemplazar el ''mes'' anterior de importación al cargar ''lubridate''
4: reemplazar la importación anterior ''wday'' al cargar ''lubridate''
5: reemplazo de la ''semana'' anterior de importación al cargar ''lubridate''
6: reemplazar la importación anterior ''yday'' al cargar ''lubridate''
7: reemplazar el ''año'' de importación anterior al cargar ''lubricado''
d <- my.function (arg1, arg2)
Error en MATCH (x, x): no se pudo encontrar la función "MATCH"
Usando traceback (), descubrí que esto se está generando durante una llamada a merge.zoo (). Así que intenté cargar el zoológico a mano durante mi sesión R y listo, entonces la función funciona correctamente sin el mensaje de error.
He intentado cambiar el orden de las importaciones a mano tanto en el archivo "pkg-package.R" como en NAMESPACE. Sin embargo, según lo que encontré en otra parte, no he agregado Importaciones o Dependencias a DESCRIPCIÓN. ¿Ayuda?
Las advertencias se deben a que data.table y lubridate definen una hour
símbolo, etc .; vea data.table::hour
y lubridate::hour
. Puede evitar esto importando solo las funciones de lubridate / data.table que desee, en lugar de todo el paquete; un archivo NAMESPACE estándar contendría
importFrom(lubridate, hour)
por ejemplo. En roxygen2 usarías la etiqueta:
@importFrom lubridate hour
El problema de MATCH es probablemente porque la merge
está enviando incorrectamente, probablemente porque zoo debería tener en su espacio de nombre S3method(merge, zoo)
lugar de export(merge.zoo)
, como se describe en Writing R Extensions, 1.6.2. La solución aquí es ponerse en contacto con el mantenedor de zoo
, packageDescription(''zoo'')$Maintainer
(el mantenedor está suficientemente versado en R que siento que he diagnosticado mal ...).