trabajar studio seleccionar leer importar datos data con commander columnas r namespaces package

studio - seleccionar columnas en r



¿Cuál es el beneficio de importar en un espacio de nombres en R? (1)

El mecanismo de espacio de nombres de R permite export funciones que luego son visibles para el usuario. Además, permite import funciones desde otros paquetes. Mientras que el beneficio de la exportación es obvio, tengo más problemas para entender el beneficio de la importación.

Un beneficio parece ser que se pueden usar funciones de otros paquetes sin adjuntar el paquete y, por lo tanto, ahorrar memoria. Esto se ejemplifica en la sección 1.6.4 del manual de extensiones R de escritura .

Sin embargo, debe haber otros beneficios de la función de importación. Especialmente, la sección 1.6.6 (que trata de las clases de S4) muestra el namespace de namespace del paquete stats4:

export(mle) importFrom("graphics", plot) importFrom("stats", optim, qchisq) ## For these, we define methods or (AIC, BIC, nobs) an implicit generic: importFrom("stats", AIC, BIC, coef, confint, logLik, nobs, profile, update, vcov) exportClasses(mle, profile.mle, summary.mle) ## All methods for imported generics: exportMethods(coef, confint, logLik, plot, profile, summary, show, update, vcov) ## implicit generics which do not have any methods here export(AIC, BIC, nobs)

Aquí hay funciones importadas que no son ni clases de S4 ni genéricas (donde tendría sentido usar la importación también, como se documenta en el ejemplo de esa sección ), pero funciona como la plot del paquete de graphics que se cargan automáticamente cuando R comienza.

Por lo tanto, mi pregunta es, ¿cuál es el beneficio de importar funciones como plot , optim o qchisq ?


Si una función foo se importa de la barra de paquetes, se encuentra independientemente de lo que haga el usuario en su ruta de búsqueda, por ejemplo, al adjuntar un paquete Baz que también tiene una función foo . Sin un espacio de nombre, el código del paquete se encontraría repentinamente usando Baz::foo . También hay problemas de eficiencia (se encuentra foo inmediatamente, en lugar de después de buscar todos los símbolos en la ruta de búsqueda), pero es probable que sean triviales para la mayoría de las aplicaciones. De la misma manera, importFrom es una mejora sobre la import debido a menos colisiones (o uso de funciones involuntarias) y una búsqueda más eficiente.

Con S4 (y S3) las cosas pueden complicarse bastante. Una función no genérica como graphics::plot se puede promover a un genérico (con setGeneric ) en dos paquetes diferentes, y cada genérico puede tener su propio conjunto de métodos adjuntos. El autor de un paquete querrá ser preciso sobre qué plot genérico y, por lo tanto, qué tabla de despacho de métodos, sus clases y métodos se pueden ver.

Llamar a una función con pkg::foo siempre se resuelve en la función deseada. Requiere que pkg esté listado en el campo Depende: del archivo de DESCRIPCIÓN (tal vez en Importaciones: pero luego parece una publicidad engañosa para no importar desde pkg), contaminando la ruta de búsqueda del usuario. También implica dos búsquedas de símbolos y una llamada a función ( :: , y por lo tanto es menos eficiente. La parte perezosa y la falta de atención al detalle de mi persona también ve el uso de :: como tedioso y propenso a errores.

El paquete codetoolsBioC (a través de svn con nombre de usuario y contraseña de readonly ) puede generar un archivo NAMESPACE a partir de un paquete existente (o, al menos, antes de que los cambios recientes en R-devel introdujeran un NAMESPACE en paquetes sin uno; no he probado codetoolsBioC en tales un paquete).