Encontrar lo que necesita en R: búsqueda enfocada en R y en todos los paquetes CRAN (más de 3,500)

StackOverflow https://stackoverflow.com/questions/1812702

  •  06-07-2019
  •  | 
  •  

Pregunta

A menudo en R, hay una docena de funciones dispersas en tantos paquetes, todos los cuales tienen el mismo propósito pero, por supuesto, difieren en precisión, rendimiento, documentación, rigor teórico, etc.

¿Cómo ubicarlos, desde R e incluso entre los paquetes de CRAN que no ha instalado?

Entonces, por ejemplo: la función genérica plot . Establecer marcas secundarias es mucho más fácil utilizando una función fuera del paquete base:

minor.tick(nx=n, ny=n, tick.ratio=n)

Por supuesto, plot está en R core, pero minor.tick no lo está, en realidad está en Hmisc .

Por supuesto, eso no aparece en la documentación de plot , ni debería esperarlo.

Otro ejemplo: los argumentos de entrada de datos para plot pueden ser suministrados por un objeto devuelto por la función hexbin , nuevamente, esta función es de una biblioteca externa del núcleo R.

¿Qué sería genial, obviamente, es una forma programática de reunir estos argumentos de función de las diversas bibliotecas y ponerlos en un solo espacio de nombres?

* edit: (tratando de reafirmar mi ejemplo justo más arriba :) los argumentos para plot suministrados en R core, por ejemplo, establecer la frecuencia de tick del eje son xaxp / yaxp; sin embargo, también se puede establecer a / t / f a través de una función fuera del paquete base, de nuevo, como en la función minor.tick del paquete Hmisc, pero no lo sabría simplemente mirando la firma del método de trazado . ¿Hay una meta función en R para esto? *

Hasta ahora, a medida que los encuentro, los he estado reuniendo manualmente, cada conjunto reunido en un solo TextMate fragmento (junto con las importaciones de la biblioteca auxiliar) . Esto no es tan difícil o lento, pero solo puedo actualizar mi fragmento a medida que descubro estos argumentos / parámetros adicionales. ¿Hay una forma R canónica de hacer esto, o al menos una forma más fácil?

En caso de que no esté claro, no estoy hablando del caso en el que varios paquetes proporcionan funciones dirigidas a la misma estadística o vista (por ejemplo, 'boxplot' en el paquete base; 'boxplot.matrix' en gplots; y 'bplots' en Rlab). De lo que estoy hablando es del caso en que el nombre de la función es el mismo en dos o más paquetes.

¿Fue útil?

Solución

El " sos " El paquete es un excelente recurso. Su interfaz principal es el " findFn " comando, que acepta una cadena (su término de búsqueda) y escanea la " función " entradas en la base de datos de búsqueda del sitio de Johnathan Baron, y devuelve las entradas que contienen el término de búsqueda en un marco de datos (de la clase " findFn ").

Las columnas de este marco de datos son: Recuento , MaxScore , TotalScore , Paquete , Función , Fecha , Puntuación , Descripción y Enlace . Al hacer clic en " Enlace " en la fila de cualquier entrada, aparecerá inmediatamente la página de ayuda.

Un ejemplo: suponga que desea encontrar todos los filtros de convolución en todos los paquetes 1800+ R.

library(sos)
cf = findFn("convolve") 

Esta consulta buscará el término "convolucionar", en otras palabras, ese no tiene que ser el nombre de la función.

Tecleando " cf " devuelve una tabla HTML de todas las coincidencias encontradas (23 en este caso). Esta tabla es una representación HTML del marco de datos que mencioné anteriormente. Lo que es particularmente conveniente es que cada columna (`` Count '', `` MaxScore '', etc.) se puede ordenar haciendo clic en el encabezado de la columna, para que pueda ver los resultados por `` Score '', por `` Nombre del paquete '', etc.

(Como comentario aparte: al ejecutar esa consulta exacta, uno de los resultados fue la función '' panel.tskernel '' en un paquete llamado '' latticeExtra ''. No sabía que este paquete tenía filtros de series temporales y dudo que lo hubiera descubierto de otra manera.

Otros consejos

Su pregunta no es fácil de responder. No hay una función definitiva.

formals es la función que proporciona los argumentos named a una función y sus valores predeterminados en una lista con nombre, pero siempre puede tener argumentos variables a través del . .. parámetro y argumentos con nombre ocultos con la función incrustada hadArg . Para obtener una lista de esos, tendría que usar getAnywhere y luego escanear la expresión para el hasArg. No puedo pensar en una forma automática de hacerlo usted mismo. Eso es si los argumentos ocultos de las funciones no están documentados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top