2012-06-01 11 views
6

Mis compañeros de trabajo desean asegurarse de que nuestro trabajo en R sea independiente de la plataforma, específicamente ese código se ejecutará en Linux, Mac y Windows, y los archivos creados en un sistema funcionarán en otros sistemas.¿Hay funciones de R que dependen del sistema?

Como el problema ha surgido anteriormente en mi grupo, agradecería una respuesta general que me facilite la tarea de asegurarles a mis colaboradores que no habrá ningún problema. Por ejemplo, ayudaría tener una referencia que no sea "porque (subject matter expert) dijo SO SO".

  1. En general, ¿hay alguna manera de saber si alguna característica de R es específica de la plataforma (puedo suponer que esto se indicaría en la ayuda de una función)?
  2. ¿Existen paquetes o funciones de las que pueda confiar que serán independientes de la plataforma?
  3. ¿Hay algún tipo de paquetes o funciones que deba tener en cuenta?

que previamente han pedido a dos preguntas sobre la legibilidad de plataforma cruzada de los archivos creados por R: What are the disadvantages of using .Rdata files compared to HDF5 or netCDF? y Are R objects dumped using `dump` readable cross-platform?

Respuesta

4

Además de la respuesta de Carl, el obvia manera de asegurarse de que su trabajo en una plataforma independiente es a prueba de en todas las plataformas.

Que es precisamente lo que CRAN hace con sus 3800+ paquetes, y usted tiene acceso a los registros here.

En resumen, R realmente se esfuerza por ser independiente de la plataforma, y ​​en su mayoría tiene éxito. Para hacerlo con su código, depende de usted evitar las API o herramientas que introducen dependencias. Mire abstracciones como system.file(package="boot") y las funciones que utilizan --- puede abstraer fácilmente las "raíces" del sistema de archivos, y los separadores ya están ocupados.

2

Comprobar cran.r-project.org listados de paquetes. Cada paquete tiene una página que le informará si ha pasado las pruebas para diferentes sistemas operativos. Además, como sugirió, los archivos de ayuda son bastante explícitos sobre las dependencias del sistema operativo. R es lo suficientemente "inteligente" como para traducir "/" a "\" en nombres de ruta para aquellos pobres que trabajan en Windows. En términos generales, el acceso a gráficos es el área con mayor probabilidad de tener dependencias de plataforma. Obviamente, si su sistema carece de {X11, ImageMagick, ..} usted está atascado de todos modos.

+2

Vale la pena señalar que la función 'file.path()' es la clave para crear rutas de archivos independientes de la plataforma. –

+0

@OP: sobre el tema de rutas de archivos, tenga en cuenta que las barras diagonales (a veces) no son válidas en Windows. 'file.exists (normalizePath (" ~ "))' devuelve 'TRUE' mientras' file.exists (normalizePath ("~ /")) 'devuelve' FALSE'. Ambos son 'VERDADEROS' en Linux. – jthetzel

2

Además de los comentarios de Carl y Dirk, debe comprender que cualquier paquete que requiera compilación desde el origen (al igual que muchos (todos?) Paquetes que están en Omegahat, Rforge o r-forge) deberá hacerse en una máquina que tiene las bibliotecas adecuadas de C y Fortran. Algunos paquetes interesantes dependen de GTK + y Tcl/Tk, y puede ser necesario asegurarse de que pueda obtener las versiones correctas. La página http://r.research.att.com/ que Simon Urbanek mantiene es un recurso útil para mantenerse al día con los recursos de apoyo para Mac.

Cuestiones relacionadas