Domanda

All'inizio della mia vita a R ho scoperto il dolore di R e windows su pagine diverse quando si trattava del separatore tra directory e sottodirectory. Anche se sono a conoscenza del problema, sono ancora addolorato dal dover manualmente inserire una barra rovesciata davanti a tutte le mie barre rovesciate o sostituirle tutte con barre rovesciate.

Adoro copiare un nome percorso o un intero nome file con una delle numerose applicazioni che ho in esecuzione sul mio computer (ad es. XYPlorer, Tutto da voidtools) e incollarlo in Tinn-R. Esiste comunque un modo per automatizzare l'attività che sto svolgendo attualmente manualmente.

  • C'è un'impostazione in Tinn-R?
  • C'è un'impostazione in R?
  • Esiste uno script autohotkey che potrebbe farlo per impostazione predefinita?

Sfondo per coloro che non sanno di cosa sto parlando

Citando da R per Windows FAQ, versione per R-2.9.2, B. D. Ripley e D. J. Murdoch

  

Le barre rovesciate devono essere raddoppiate in R   stringhe di caratteri, quindi ad esempio una   esigenze   `& Quot; d: \ R-2.9.2 \ Libreria \ xgobi \ scripts \ xgobi.bat "'.   Puoi semplificarti la vita   usando le barre in avanti come percorso   separatori: funzionano su Windows

È stato utile?

Soluzione

Ho scritto uno script autohotkey che viene attivato digitando " rfil " - senza le virgolette.

:O:rfil:: ;replaces backslashes with forward slashes in a file name that is stored on the clipboard
StringReplace,clipboard,clipboard,\,/,All
send %clipboard%
return

Se qualcuno può dirmi un modo più rapido rispetto all'utilizzo del comando send, lo apprezzerei. Ho uno script autohotkey sempre in esecuzione su tutti i miei computer, quindi non ho dovuto scaricare nuovo software per eseguire questo script. L'ho semplicemente aggiunto al mio file di script predefinito.

Sarò felice di spiegare cosa ho fatto se tu lo volessi.

Altri suggerimenti

ClipPath aggiunge le opzioni del menu contestuale per scegliere il tipo di barra che desideri incollare.

Via Getting Genetics Done , che potrebbe essere una risorsa utile per gli utenti R in generale.

Ho adattato il seguente codice di autohotkey condiviso per sostituire tutte le barre rovesciate con barre in avanti ogni volta che incollo qualcosa in RStudio. Ci sono pro e contro in questo approccio.

Pro: Non devi pensarci. Il codice verrà eseguito solo se la finestra attiva è RStudio.

Contro: Il codice viene chiamato ogni volta che si incolla qualcosa in R. Ogni volta che tenta di trovare barre rovesciate e sostituirle con barre in avanti.

GroupAdd, R, RStudio

;replaces backslashes with forward slashes in a file name that is stored on the clipboard
#IfWinActive ahk_group R
   ^v::
      StringReplace,clipboard,clipboard,\,/,All
      send %clipboard%
   return
#IfWinActive

Uso search & amp; sostituire, ma ovviamente non è completamente automatico e devi fare attenzione a non sostituire " \ t " o " \ n " ;.

Non esattamente la risposta che stai cercando, ma R ha le sue funzioni di scripting della shell che uso spesso:

list.files (, full = TRUE) [restituisce il percorso completo con i separatori appropriati]

file.path () [si unisce al separatore specifico del sistema operativo]

e così via ...

È possibile creare una funzione wrapper attorno a tutti i nomi di percorso:

> replace.slash <- function(path.name) gsub("\\\\","/",path.name)
> path.name <- "c:\\tmp\\"
> replace.slash(path.name)
[1] "c:/tmp/"

[Modifica]: Grazie Hadley. Ho corretto l'errore lì.

Per inciso, ho trovato questa utile discussione su questo argomento .

Questo è AutoIt che fa la stessa cosa (sostituisce \ con / ).

Local $text1 = ClipGet()
$text2=StringReplace($text1,"\","/")
ClipPut($text2)

perché non creare una funzione che controlla il sistema operativo e restituisce il separatore di file corretto (credo la soluzione java)?

file_sep <- function(){
ifelse(.Platform$OS.type == "unix", "/", "//")
}
file_sep()

puoi scegliere un nome più corto, se lo desideri. Il grande difetto qui è che devi incollare insieme i percorsi dei file, ma vale comunque la pena a lungo termine se stai lavorando a grandi progetti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top