2011-12-08 5 views

risposta

87

sostituire tutti i \ con \\.

sta cercando di sfuggire il carattere successivo in questo caso il U in modo da inserire un \ è necessario inserire un sfuggito \ che è \\

+28

loro sostituzione con '/' funziona pure. –

+0

risolto il problema, grazie. – Mostafa

+0

Questo è vero semplicemente sostituire \ con \\ e lo script viene eseguito correttamente. Grazie Smit !! –

22

Si prega di non marcare questa risposta corretto quanto Smitec ha già risposto in modo corretto. Sto includendo una funzione di comodità che tengo nella mia libreria .First che rende la conversione di un percorso di Windows nel formato che funziona in R (i metodi descritti da Sacha Epskamp). Basta copiare il percorso negli appunti (ctrl + c) e quindi eseguire la funzione come pathPrep(). Non c'è bisogno di una discussione. Il percorso viene stampato correttamente nella tua console e scritto negli Appunti per incollare facilmente uno script. Spero che questo sia utile.

pathPrep <- function(path = "clipboard") { 
    y <- if (path == "clipboard") { 
     readClipboard() 
    } else { 
     cat("Please enter the path:\n\n") 
     readline() 
    } 
    x <- chartr("\\", "/", y) 
    writeClipboard(x) 
    return(x) 
} 
+1

Stavo per scrivere questo e io sono felice ho controllato prima. Grazie mille. Sono davvero sorpreso che questo non sia trapelato in uno dei pacchetti più popolari là fuori (a meno che non mi manchi solo). Lo userò nella mia sceneggiatura, quindi pubblicherò la leggera variazione quando avrò finito. – Rob

+1

È ora nel pacchetto di sviluppo dei report e alla fine verrà inviato a CRAN. Vedi ['WP' (percorso Windows)] (https://github.com/trinker/reports/blob/master/R/WP.R) nel pacchetto di sviluppo dei report. –

7

Soluzione

Prova questo: x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

Spiegazione

R non è in grado di comprendere correttamente normali percorsi di Windows perché il "\" ha un significato speciale - È usato come escape character per dare un significato speciale ai seguenti caratteri (\n per newline, \t per scheda, \r per il ritorno a capo, ..., have a look here).

Poiché R non conosce la sequenza \U si lamenta. Basta sostituire il "\" con "/" o utilizzare un ulteriore "\" per sfuggire allo "\" dal suo significato speciale e tutto funziona perfettamente.

alternativa

su Windows, credo che la cosa migliore da fare per migliorare il flusso di lavoro con finestre percorsi specifici in R è quello di utilizzare per esempio AutoHotkey che consente i tasti di scelta rapida personalizzati:

  • definire un tasto di scelta rapida, ad es. Cntr - Maiusc - V
  • assegna è una procedura che sostituisce le barre rovesciate all'interno del vostro Appunti con slaches ...
  • quando mai si desidera copiare incollare un percorso in R è possibile utilizzare Cntr - Maiusc - V invece di Cntr - V
  • Et-voila

Snippet di codice AutoHotkey(link to homepage)

^+v:: 
StringReplace, clipboard, clipboard, \, /, All 
SendInput, %clipboard% 
0

penso che R sta leggendo il '\' nella stringa come carattere di escape. Ad esempio \ n crea una nuova riga all'interno di una stringa, \ t crea una nuova scheda all'interno della stringa.

'\' funzionerà perché R riconoscerà questo come una barra rovesciata normale.

-2

Un modo semplice è quello di utilizzare Python. in pitone tipo di terminale

r"C:\Users\surfcat\Desktop\2006_dissimilarity.csv" and you'll get back 'C:\Users\surfcat\Desktop\2006_dissimilarity.csv'

2

My Solution è quello di definire un RStudio snippet come segue:

snippet pp 
    "`r gsub("\\\\", "\\\\\\\\\\\\\\\\", readClipboard())`" 

Questo frammento converte rovesciano \ nel rovesciare doppio \\. La seguente versione funziona se si preferisce convertire backslahes in barre /.

snippet pp 
    "`r gsub("\\\\", "/", readClipboard())`" 

Una volta che il frammento preferito è definito, incollare un percorso dagli Appunti digitando p - p - TAB - ENTER (cioè pp e poi il tasto TAB e quindi immettere) e il percorso sarà magicamente inserito con delimitatori R friendly.

0

Il modo migliore per affrontare questo in caso di file txt che contiene i dati per l'estrazione di testo (speech, newsletter, ecc) è di sostituire "\" con "/".

Esempio:

file<-Corpus(DirSource("C:/Users/PRATEEK/Desktop/training tool/Text Analytics/text_file_main")) 
1

Sostituire indietro barre \ con slash/quando si esegue Windows macchina

Problemi correlati