2011-12-08 29 views
56

Uruchamiam R w systemie Windows i mam plik csv na pulpicie. I załadować go w następujący sposób:Problemy z ścieżką pliku w R przy użyciu systemu Windows (błąd "Cyfry szesnastkowe w ciągu znaków")

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

ale R daje następujący komunikat o błędzie

Error: '\U' used without hex digits in character string starting "C:\U"

Więc co jest poprawny sposób, aby załadować ten plik. Używam Vista

Odpowiedz

87

zamień wszystkie \ na \\.

że próbuje uciec następny znak w tym przypadku U tak aby wstawić \ trzeba włożyć uciekł \ który jest \\

+28

Wymiana je z '/' działa tak samo. –

+0

to naprawiło mój problem, dziękuję. – Mostafa

+0

To prawda, wystarczy zastąpić \ z \\ i skrypt działa poprawnie. Dzięki Smit !! –

22

Proszę nie zaznaczyć tę odpowiedź prawidłowa jak smitec odpowiedział już poprawnie. Załączam funkcję wygody, którą przechowuję w mojej bibliotece .First, która sprawia, że ​​konwersja ścieżki Windows do formatu działającego w R (metody opisane przez Sacha Epskamp). Po prostu skopiuj ścieżkę do schowka (ctrl + c), a następnie uruchom funkcję jako pathPrep(). Nie ma potrzeby kłótni. Ścieżka zostanie poprawnie wydrukowana na konsoli i zapisana w schowku w celu łatwego wklejenia do skryptu. Mam nadzieję, że to jest pomocne.

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

Już miałem to napisać i jestem Cieszę się, że najpierw sprawdziłem. Dzięki za tonę. Jestem naprawdę zaskoczony, że nie dostał się do jednego z bardziej popularnych pakietów tam (chyba że po prostu tęsknię za tym). Zamierzam użyć tego w moim scenariuszu, więc opublikuję niewielką zmianę, gdy skończę. – Rob

+1

Jest teraz w pakiecie do tworzenia raportów i ostatecznie zostanie przekazany do CRAN. Zobacz ['WP' (ścieżka Windows)] (https://github.com/trinker/reports/blob/master/R/WP.R) w pakiecie deweloperów raportów. –

7

Rozwiązanie

Spróbuj tego: x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

Wyjaśnienie

R nie jest w stanie zrozumieć poprawnie normalne okna ścieżek ponieważ "\" ma szczególne znaczenie - służy jako uciec znak, aby nadać następujące znaki specjalne znaczenie (\n dla newline, \t dla karty, \r dla powrotu karetki, ..., have a look here).

Ponieważ R nie zna sekwencji \U, narzeka. Wystarczy zamienić "\" na "/" lub użyć dodatkowego "\", aby uniknąć "\" ze specjalnego znaczenia i wszystko działa sprawnie.

alternatywna

Na oknach, myślę, że najlepiej zrobić, aby poprawić przepływ pracy z oknami poszczególnych ścieżek w R jest użycie np AutoHotkey, który umożliwia niestandardowe klawisze szybkiego dostępu:

  • zdefiniować klawisz skrótu, np. Cntr - Przesunięcie - V
  • przypisuje mu procedurę, która zastępuje backslashy w swoim schowku z slaches ...
  • gdy kiedykolwiek chcesz skopiować wkleić ścieżkę do R można użyć Cntr - Przesunięcie - V zamiast Cntr - V
  • Et-voila

AutoHotkey Fragment kodu(link to homepage)

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

Myślę, że R czyta "\" w łańcuchu jako znak ucieczki. Na przykład \ n tworzy nową linię w ciągu, \ t tworzy nową kartę w ciągu znaków.

"\" zadziała, ponieważ R rozpozna to jako normalny ukośnik odwrotny.

-2

Prostym sposobem jest użycie Pythona. w pytona terminala

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

2

My Solution jest zdefiniowanie RStudio snippet następująco:

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

Ten fragment przekształca backslashy \ do ukośnika podwójnego \\. Następująca wersja będzie działać, jeśli wolisz konwertować backslahes do przekierowań ukośnych /.

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

Po preferowany fragment jest zdefiniowana, wklej ścieżkę ze schowka wpisując P - p - TAB - ENTER (czyli pp, a następnie klawisz Tab, a następnie Enter) a ścieżka zostanie magicznie wstawiona z przyjaznymi dla R ogranicznikami.

0

Najlepszym sposobem radzenia sobie z tym w przypadku pliku txt zawierającego dane do eksploracji tekstu (mowa, biuletyn, itp.) Jest zamiana "\" na "/".

Przykład:

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

Wymień powrotem ukośniki \ z ukośniki/podczas uruchamiania komputera z systemem Windows