2011-01-10 21 views
5

Estoy escribiendo un paquete R en el que puede hacer redes y darles salida en diferentes tipos de archivos. Encontré el paquete SVGRTipsDevice que se puede usar para crear imágenes SVG que contienen tooltips e hipervínculos, que realmente me gusta. He incluido esto en mi paquete como una de las opciones para enviar, por lo que no es una parte esencial de mi paquete, pero sí una parte (una que quiero mantener).Escribir un paquete R que es diferente por arquitectura

El problema ahora es que este paquete es solo para usuarios de 32 bits. Debido a que mi paquete depende de él, los usuarios de 64 bits no pueden instalarlo. parece que tengo que hacer mi paquete solo 32 bit también o eliminar las capacidades SVG (actualmente escogí este último para subir a CRAN, con un enlace al paquete completo en mi sitio).

¿Hay alguna manera de hacer esto de manera diferente? Como hacer que el paquete sea instalable para cualquier persona, pero solo haga que la funcionalidad SVG esté disponible para usuarios de 32 bits.

+0

Cuando dices "no es una parte esencial de mi paquete, sino parte de él" ¿creas tu paquete con SVGRTipsDevice in Suggests? – mdsumner

Respuesta

4

Los paquetes enumerados en el campo Sugerencias: o Mejoras: del archivo DESCRIPCIÓN de su paquete no necesitan instalarse en el sistema del usuario para que su paquete sea instalado, de modo que los usuarios de 32/64 bits puedan instalar su paquete. En lugar de probar Bit-Ness, puede ok <- suppressWarnings(require(SVGToolTips))), tal vez en .onLoad o similar.

+0

Gracias, esto es exactamente lo que necesitaba. Es mi primer paquete y estoy cometiendo algunos errores de novato. –

6

manera más fácil de lo que puedo pensar es comprobar Sys.info() para el tipo de máquina:

Así que en mi máquina:

Sys.info()["machine"] 
machine 
"x86_64" 

EDITAR Creo que nos dice la arquitectura del hardware, no si R es 32 o 64 bit. Así que si un usuario tiene un hardware de 64 bits y de 32 bits se ejecuta R, el código anterior todavía volvería x86_64 Como Sacha me señaló, una mejor solución es ejecutar:

R.Version()$arch 
[1] "x86_64" 

Así se puede ver que soy ejecutando un sistema operativo de 64 bits Y estoy ejecutando la versión de 64 bits de R.

+0

¡Gracias, esto debería ser muy útil! –

+0

Puede obtener información sobre la arquitectura de R con: R.Version() $ arch –

+0

Sacha, ese es un buen punto. Edité mi respuesta. Gracias por señalar eso. –

0

Usted podría hacer un paquete packagename-32bit también con la funcionalidad adicional.

Cuestiones relacionadas