2015-07-15 28 views
6

Ci sono molte informazioni su come modificare la directory di lavoro predefinita in R (ogni volta che viene avviato R o RStudio, la directory di lavoro tornerà ai valori predefiniti, quindi è necessario eseguire setwd() ogni volta). In RStudio, c'è un'opzione rilevante in Strumenti> Opzioni globali> Generale. Le altre soluzioni sembrano implicare la modifica del file Rprofile.site. Tuttavia, tutto ciò richiede all'utente di essere in grado di trovare il Rprofile e di modificarlo, o di navigare tra le impostazioni, e per tutto il tempo di non rovinare.Che cosa è un modo infallibile per impostare in modo permanente la directory di lavoro R?

Quello che mi serve è una soluzione per pazzi studenti che non hanno idea di come fare questo. Si potrebbe dire che la personalizzazione dell'ambiente sarebbe una buona pratica, ma questo è un corso molto breve, e mi piacerebbe che fosse il più indolore possibile per le anime illetterate al computer del pubblico.

Ho già scritto uno script che scarica tutti i pacchetti necessari per il corso, carica lo script in RStudio, scarica e carica un'area di lavoro con dati e funzioni. Devono solo eseguirlo una volta dopo l'installazione di R + RStudio. Per un attimo ho pensato questo sarebbe una buona idea:

cat("setwd(\"the desired working directory\")", file=file.path(Sys.getenv("R_HOME"), "etc", "Rprofile.site"), append=T) 

... ma questo getta Autorizzazione negata, almeno sotto Windows (file di programma sono protetti immagino). La soluzione desiderata dovrebbe essere indipendente dalla piattaforma (molti di loro hanno Windows, ma alcuni potrebbero avere Mac o Linux). Ma soprattutto, dovrebbe consistere semplicemente nell'incollare lo script nella console e premere Invio, niente di più complesso (da qui la parte a prova di idiota del titolo).

+1

'setwd (Sys.getenv (" R_HOME "))' passa alla directory di installazione mentre 'setwd (Sys.getenv (" HOME "))' andrà alla cartella Documenti dell'utente in Windows e alla cartella home dell'utente in Linux (e suppongo anche su Mac). – christoph

+0

@choff Sono consapevole; Ho già provato a impostare Sys.setenv ("HOME" = ...) ma viene reimpostato su R restart. – user3554004

+0

spero che il sotto aiuti. È un modo semplice per usare R in Windows e conservare la tua cartella di partenza con qualsiasi 'setwd'. Sentiti libero di chiedere se hai domande su di esso. –

risposta

5

Che dire qualcosa di simile

set_default_wd <- function(wd = getwd()) { 
    text <- paste0(
    'local({ setwd("', wd, '") })') 
    ## 
    if (Sys.info()["sysname"] == "Windows") { 
    write(
     text, 
     file = paste0(Sys.getenv("HOME"), "\\.Rprofile"), 
     append = TRUE) 
    } else { 
    write(
     text, 
     file = paste0(Sys.getenv("HOME"), "/.Rprofile"), 
     append = TRUE) 
    } 
} 
## 
#R> set_default_wd() #set_default_wd("some/file/path") 

Questo dovrebbe funzionare su Windows e sistemi Unix-like, e di evitare eventuali problemi di autorizzazioni. In realtà l'unico requisito per l'utente è quello di specificare un percorso file valido, che dovrebbero (si spera) in grado di risolvere.


Può essere utile avere la possibilità di sovrascrivere il $HOME/.Rprofile (invece di costringere linee da aggiungere) in caso di un percorso di file valido è data, ecc ...

set_default_wd <- function(wd = getwd(), overwrite = FALSE) { 
    text <- paste0(
    'local({ setwd("', wd, '") })') 
    ## 
    if (Sys.info()["sysname"] == "Windows") { 
    write(
     text, 
     file = paste0(Sys.getenv("HOME"), "\\.Rprofile"), 
     append = !overwrite) 
    } else { 
    write(
     text, 
     file = paste0(Sys.getenv("HOME"), "/.Rprofile"), 
     append = !overwrite) 
    } 
} 
+1

Ha funzionato! In effetti, scegliere la directory di lavoro è l'unico passo interattivo che farò loro fare durante la fase di installazione (usando choose.dir(), che fa apparire un'interfaccia di navigazione della cartella). Per qualche ragione wd = choose.dir() non funzionerà, il \\ diventa cambiato in single \ e salvato nel Rprofile, che genererà un errore su R restart. Ma setwd (choose.dir) e poi wd = getwd() funziona bene. – user3554004

+1

@ user3554004 Sono contento che questo ha funzionato per voi. Va notato che 'choose.dir()' è una funzione specifica di Windows, se non lo sapessi. Non l'ho mai usato prima, sembra che ci sia una versione indipendente dalla piattaforma di 'choose.dir' disponibile nel pacchetto' rChoiceDialogs' - vedi [qui] (http://www.inside-r.org/packages/ cran/rChoiceDialogs/docs/rchoose.dir). Certo, questo pacchetto dovrebbe essere installato, in modo che possa essere un ulteriore passaggio/complicazione nel processo. – nrussell

+1

No, in realtà non ne ero a conoscenza, +1. – user3554004

1

È possibile creare una scelta rapida di RGui.exe sulla barra degli strumenti.

Quindi fare clic con il pulsante destro del mouse sull'icona, fare clic con il pulsante destro del mouse su R, Proprietà e nella scheda Collegamento, è possibile impostare Start in: la cartella desiderata.

Per esempio C:/Users/myStudentID/Documents/dev

enter image description here

1

Il più l'opzione infallibile può essere quella di installare un server Rstudio, configurarlo con tutti i pacchetti desiderati, quindi assegnare ad ogni studente un account sul server. In questo modo ogni studente inizia con una configurazione identica e la propria directory/cartella. Gli studenti hanno solo bisogno di un accesso ad internet per usarlo. È quindi possibile fornire istruzioni per quegli studenti che sono abbastanza avventurosi per installare R sul proprio computer (e sono più propensi a seguire le istruzioni per configurarlo correttamente).

Si potrebbe anche provare l'opzione cat, ma inserire le istruzioni in .Rprofile in 'HOME' invece di .Rprofile.site in 'R_HOME'.

Oppure è possibile inserire il codice in una funzione e fare in modo che salvino il proprio spazio di lavoro nel percorso predefinito, quindi quando eseguono R dal percorso predefinito, la directory di lavoro verrà modificata da .First.

Oppure si potrebbe semplicemente lasciare che funzionino nella directory predefinita.

+0

Questa non è una cattiva opzione (server), ma l'accesso a internet è una cosa che non avrò nei locali (per dire che è nei boschi non sarebbe lontano dalla verità). Avendo imparato dai commenti che choose.dir() è specifico per Windows, potrei in realtà accettare il tuo suggerimento di lasciare la directory di lavoro predefinita per i pochi utenti non Windows (il rovescio della medaglia è che probabilmente avranno altre cose lì dentro come bene). – user3554004

Problemi correlati