code r devtools package-development

code - advertencias de caracteres(0) al ejecutar devtools:: load_all(".") en RStudio



shiny ui (2)

Tengo un paquete R que he estado construyendo en RStudio, llamémoslo my_pkg . Cuando ejecuto devtools::load_all(".") Dentro de RStudio (específicamente usando el atajo Ctrl + Shift + L ), recibo el siguiente mensaje:

Loading my_pkg Warning messages: 1: character(0) 2: character(0) 3: character(0) 4: character(0) 5: character(0)

Todas las funciones en el paquete funcionan bien. Mis archivos NAMESPACE y DESCRIPTION están completos sin errores de sintaxis. Sin embargo, cuando ejecuto ?my_pkg , el archivo de ayuda no coincide con las especificaciones proporcionadas en el archivo de DESCRIPTION . Cuando quito Imports de DESCRIPTION , no hay más mensajes de advertencia de character(0) . Por supuesto, necesito esas importaciones. Cuando cambio Imports a Suggests , aparece un mensaje de advertencia de character(0) .

Aquí está el contenido del archivo de descripción, con algunas cosas cambiadas para proteger IP.

Package: scoutdroid Title: This is where the title is. Version: 0.1 Authors@R: "Ben Hanowell <[email protected]> [aut, cre]" Description: This is where the description is. Depends: R (>= 3.1.0) Imports: dplyr, lubridate, mboost, randomForestSRC, RODBC, stringr License: file LICENSE LazyData: true

Y aquí está NAMESPACE .

# Generated by roxygen2 (4.0.1): do not edit by hand import(RODBC) import(dplyr) import(lubridate) import(mboost) import(parallel) import(randomForestSRC) import(stringr)

Cuando uso el botón RStudio Build & Reload en la pestaña Build, recibo las siguientes advertencias:

** Preparación del paquete para la carga perezosa.

Warning: replacing previous import by ''lubridate::intersect'' when loading ''scoutdroid'' Warning: replacing previous import by ''lubridate::setdiff'' when loading ''scoutdroid'' Warning: replacing previous import by ''lubridate::union'' when loading ''scoutdroid''

editar Se agregaron algunos detalles más para ayudar a la gente a comprender lo que podría estar pasando.

edit 2 También agregué el archivo de DESCRIPTION , aunque no proporciono el paquete completo, que es propietario.

edit 3 NAMESPACE agregado.

edición 4 Se agregaron advertencias que se producen al usar el botón RStudio Build & Reload en la pestaña Build.


Después de algunos diálogos en los comentarios, descubrimos que las advertencias vacías que load_all está dando realmente se inician al cargar el paquete debido a conflictos de nombres de funciones.

El problema es que está importando una función de un paquete y luego sobrescribiendo esa función. Cuando eso sucede, R lanza las advertencias que vio cuando hizo clic en "Generar y volver a cargar" en RStudio:

Warning: replacing previous import by ''lubridate::intersect'' when loading ''scoutdroid'' Warning: replacing previous import by ''lubridate::setdiff'' when loading ''scoutdroid'' Warning: replacing previous import by ''lubridate::union'' when loading ''scoutdroid''

Parece que load_all puede estar intentando load_all esas advertencias (solo una suposición) por lo que ve el character(0) lugar de las advertencias reales. (Estas advertencias particulares son difíciles de silenciar.)

En general, no es una buena idea importar el espacio de nombres de un paquete completo. En su lugar, debe importar solo los símbolos que necesita. Ver este post mío para más.

La solución es usar importFrom lugar de import en su archivo NAMESPACE.


También puede deberse a un enlace roto en la documentación de roxygen2 . Por ejemplo, cuando enlaza con una función externa a su paquete con el nombre incorrecto, diga /link[stringi]{STRI_C} lugar de /link[stringi]{stri_c}