2011-01-10 8 views
5

Sto scrivendo un pacchetto R in cui è possibile rendere le reti e le loro uscita in diversi tipi di file. Ho trovato il pacchetto SVGRTipsDevice che può essere utilizzato per creare immagini SVG contenenti tooltip e collegamenti ipertestuali, che mi piacciono molto. Ho incluso questo nel mio pacchetto come una delle opzioni per l'output, rendendolo non una parte essenziale del mio pacchetto, ma comunque parte di esso (uno che voglio mantenere).Scrivere un pacchetto di R che è diverso per ogni architettura

Il problema ora è che questo pacchetto è solo per utenti a 32 bit. Poiché il mio pacchetto dipende da questo, gli utenti a 64 bit non sono in grado di installarlo. sembra che sia necessario rendere il mio pacchetto solo a 32 bit o rimuovere le abilità SVG (attualmente ho scelto quest'ultimo per caricare su CRAN, con un collegamento al pacchetto completo sul mio sito).

Esiste un modo per fare questo in modo diverso? Come rendere il pacchetto installabile per chiunque ma solo rendere disponibili le funzionalità SVG per gli utenti a 32 bit?

+0

quando si dice "non lo rende una parte essenziale del mio pacchetto, ma una parte di essa" si fa a costruire il pacchetto con SVGRTipsDevice in suggerisce? – mdsumner

risposta

4

I pacchetti elencati nel campo Suggests: o Enhance: del file DESCRIPTION del pacchetto non devono essere installati sul sistema dell'utente per l'installazione del pacchetto, in modo che gli utenti a 32/64 bit possano installare il pacchetto. Piuttosto che testare la bit-ness, potresti ok <- suppressWarnings(require(SVGToolTips))), forse in .onLoad o simile.

+0

Grazie, questo è esattamente ciò di cui avevo bisogno. È il mio primo pacchetto e sto facendo alcuni errori da principiante. –

6

modo più semplice che posso pensare è quello di verificare Sys.info() per il tipo di macchina:

Quindi sulla mia macchina:

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

EDIT Credo che ci dice l'architettura della hardware, non se R è 32 o 64 bit. Quindi, se un utente avesse po 'hardware a 64 ed è stato in esecuzione a 32 bit R, il codice di cui sopra sarebbe ancora tornare x86_64 Come Sacha mi ha fatto notare, una soluzione migliore è quello di eseguire:

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

Così si può vedere che sono esegue un sistema operativo a 64 bit e sono in esecuzione la versione a 64 bit di R.

+0

Grazie, questo dovrebbe essere molto utile! –

+0

Puoi ottenere informazioni sull'architettura di R con: R.Version() $ arch –

+0

Sacha, questo è davvero un buon punto. Ho modificato la mia risposta. Grazie per la segnalazione. –

0

Si potrebbe fare un pacchetto di packagename-32bit anche con la funzionalità extra.

Problemi correlati