Pregunta

Esto es lo que debería y sucede usando usando rpy2.robjects.packages.importr para paquetes R base (por ejemplo stats):

>>> from rpy2.robjects.packages import importr
>>> importr('stats')
<rpy2.robjects.packages.SignatureTranslatedPackage object at 0x7f3810>

Pero con un paquete externo (por ejemplo ggplot2) este es el resultado:

>>> importr('ggplot2')
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called 'ggplot2'
Error in .Primitive("as.environment")("package:ggplot2") : 
  no item called "package:ggplot2" on the search list
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/rpy2/robjects/packages.py", line 100, in importr
    env = _as_env(rinterface.StrSexpVector(['package:'+name, ]))
rpy2.rinterface.RRuntimeError: Error in .Primitive("as.environment")("package:ggplot2") : 
  no item called "package:ggplot2" on the search list

Una complicación es que en mi directorio de casa tengo el archivo .Renviron Defina la ubicación de mi biblioteca de usuario (donde, por ejemplo, ggplot2 Las libs son), y no tengo problemas con ninguno de los Commands R library() o require() usando R y Rscript. El camino se parece a esto:

R_LIBS_USER="/path/to/my/packages"

Entonces, mi pregunta es por qué mi ruta de biblioteca de usuario excluida de la "lista de búsqueda" Rpy2 ¿usos? O, más bien, ¿cómo dirijo? Rpy2 mirar en el R_LIBS_USER ¿Camino también?

Supongo que el problema proviene del medio ambiente Rpy2 Usos, pero mi ignorancia es alta en ese sentido.

R: 2.13.0
Platform: x86_64-apple-darwin9.8.0/x86_64 (Mac, 10.6, 64-bit)

replicado con

Rpy2: 2.1.8, 2.2.1 (dev)

Utilizo R, GGPlot2 y Python regularmente, por lo que cualquier información es muy bienvenida.

¿Fue útil?

Solución

Por defecto, RPY2 se está inicializando en modo "Vanilla", y esto ignora R_Libs y amigos.

>>> import rpy2.rinterface 
>>> rpy2.rinterface.get_initoptions()
('rpy2', '--quiet', '--vanilla', '--no-save')
>>> 

Puede usar 'Rinterface.set_initoptions ()' para cambiarlos.

Por ejemplo:

import rpy2.rinterface as ri
ri.set_initoptions(('rpy2', '--verbose', '--no-save'))
ri.initr()

# from now on, just import the rest of rpy2 modules without thinking of the above.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top