2012-01-01 23 views
32

ls("package:grid") y find.funs("package:grid") en mvbutils pero al parecer ninguno de ellos puede encontrar funciones no exportada y métodos que sólo se puede acceder internamente o con ::: o getAnywhere.encontrar todas las funciones (incluyendo privado) en un paquete

He tenido que buscar los archivos en el directorio /R del paquete fuente y usar ls() en un entorno global limpio, pero debe haber una forma mejor, ¿no?

+0

'' get'' y '' getFromNamespace'' parecen llamar a un '' interno'', y necesitan saber un nombre particular, lo que no ayuda mucho. Que tu lees? –

+0

¿Qué es un símbolo particular en '' package: grid'' que no se ve listado en '' ls (package: grid) '' pero espera? –

+0

481 de ellos, según las soluciones siguientes 'setdiff (unclass (lsf.str (envir = asNamespace (" grid "), all = T)), ls ('package: grid'))' – baptiste

Respuesta

29

puede utilizar asNamespace:

> methods(cbind) 
[1] cbind.data.frame cbind.grobGrid cbind.ts*  

    Non-visible functions are asterisked 
> r <- unclass(lsf.str(envir = asNamespace("stats"), all = T)) 
> r[grep("cbind.ts", r)] 
[1] ".cbind.ts" "cbind.ts" 

cbind.ts en stats paquete es invisible, pero se puede encontrar en envir = asNamespace("stats").

+0

Limpio, gracias. Ambas respuestas funcionan bien, pero dado que solo una puede ser aceptada, optaré por el one-liner. – baptiste

24

Esto parece ser algo así como perennial aquí.

Si se trata de este de una sola línea que buscas, entonces esto debe ser un competidor (@Joshua de crédito):

ls(getNamespace("grid"), all.names=TRUE) 

(Link es una pregunta que se hizo después de lo anterior, pero estrechamente relacionado).

Como grid es un paquete básico y todavía no me he mudado a R 3 ... Estoy obteniendo 756 funciones con la Versión 2.15.1. frente a 503 de la solución unclass.

+1

'707' contra' 778' en R reciente; la mayor parte del setdiff parece ser rutinas C internas ('grid ::: L_textBounds') o constantes (' grid ::: Mb'). – baptiste

Cuestiones relacionadas