2012-03-13 3 views
10

C'è un modo per accedere alla versione di Windows di un file di aiuto su un computer Linux all'interno di R?R su diversi sistemi operativi

Scrivo una quantità decente di codice R sulla mia macchina Linux, ma devo assicurarmi che il codice venga eseguito su una macchina Windows per i collaboratori.

Ho bruciato un certo numero di volte con la lettura di un file di aiuto sulla mia macchina Linux, scrivendo il mio codice, e poi passare ore a chiedersi il motivo per cui non funziona sulla macchina Windows fino a quando controllo il fileguida su quella macchina e rendersi conto che è diverso da quello sulla macchina Linux.

Di solito ha un "NOTA: su Windows, xxxx si comporta in modo diverso ...", e vorrei sapere che mentre stavo scrivendo il codice sulla mia macchina Linux!

Mi rendo conto che molti file della guida sono specifici del sistema (ad esempio ?system), ma a volte mi piacerebbe leggere la versione di Windows sul mio computer Linux. Oggi mi sono ritrovato a voler leggere ?windows ma ho dovuto avviare il mio computer portatile Windows solo per leggere quell'helpfile, perché quella funzione non è disponibile su Linux e quindi non c'è alcun file di aiuto.

evviva.

+0

Un'alternativa al suggerimento di Dirk sarebbe quello di mantenere una copia della versione di Windows dell'Indice di Riferimento R sulla tua macchina Linux. È un singolo enorme pdf contenente i file di aiuto per tutti i pacchetti di base R, ed è memorizzato in '$ R_HOME/doc/manual/refman.pdf'. Potresti anche indagare sulla possibilità di copiare [parte di] un'installazione Windows di R sulla tua macchina Linux, e quindi usare l'argomento 'lib.loc' su' help() 'per indirizzare la tua ricerca di file di aiuto per l'installazione di Windows. albero delle directory. Sembra più fastidio del suo valore, ma dipende da te. –

risposta

5

Si può sempre guardare il sorgente che dà condizionali chiare - questo è da man/system.Rd:

#ifdef windows 
    Only double quotes are allowed on Windows: see the examples. (Note: a 
    Windows path name cannot contain a double quote, so we do not need to 
    worry about escaping embedded quotes.) 

    [...] 

#endif 
#ifdef unix 
    Unix-alikes pass the command line to a shell (normally \file{/bin/sh}, 
    and POSIX requires that shell), so \code{command} can be anything the 
    shell regards as executable, including shell scripts, and it can 
    contain multiple commands separated by \code{;}. 

    [...] 

#endif 
+0

Grazie - sembra quello che potrei dover fare. È un peccato, però. –