Masalah jalur file di R menggunakan Windows (kesalahan "Digit heksadesimal dalam string karakter")

89

Saya menjalankan R di Windows, dan memiliki file csv di Desktop. Saya memuatnya sebagai berikut,

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

tetapi R memberikan pesan kesalahan berikut

Kesalahan: '\ U' digunakan tanpa digit hex dalam string karakter yang dimulai dengan "C: \ U"

Jadi apa cara yang benar untuk memuat file ini. Saya menggunakan Vista

pengguna297850
sumber

Jawaban:

134

ganti semua \dengan \\.

itu mencoba untuk melarikan diri dari karakter berikutnya dalam hal ini Usehingga untuk memasukkan \Anda perlu memasukkan sebuah escaped \yaitu\\

smitec.dll
sumber
1
Ini benar, cukup ganti \ dengan \\ dan skrip berjalan dengan sukses. Terima kasih Smit !!
Rajeev Kumar Barnwal
Ini jawaban yang lebih baik. Jalur dari Windows di r seperti C: / Users / ... berfungsi dan tidak terlalu membingungkan daripada \\. Satu-satunya situasi di mana Anda ingin jalur tersebut berada dengan \ adalah ketika Anda melakukan panggilan shell () seperti shell ("cd C: \\ Users \\ && do something")
Monduiz
27

Harap jangan menandai tanggapan ini sebagai benar karena smitec telah menjawab dengan benar. Saya menyertakan fungsi kenyamanan yang saya simpan di pustaka. Pertama saya yang membuat konversi jalur windows ke format yang berfungsi di R (metode yang dijelaskan oleh Sacha Epskamp). Cukup salin jalur ke clipboard Anda (ctrl + c) dan kemudian jalankan fungsi sebagai pathPrep(). Tidak perlu argumen. Jalur dicetak ke konsol Anda dengan benar dan ditulis ke papan klip Anda agar mudah ditempelkan ke skrip. Semoga bermanfaat.

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)
}
Tyler Rinker
sumber
1
Saya baru saja akan menulis ini dan saya senang saya memeriksanya terlebih dahulu. Terima kasih banyak. Saya sangat terkejut ini belum bocor ke salah satu paket yang lebih populer di luar sana (kecuali saya melewatkannya). Saya akan menggunakan ini di skrip saya jadi saya akan memposting sedikit variasi ketika saya selesai.
Rob
1
Ini sekarang dalam paket pengembangan laporan dan pada akhirnya akan didorong ke CRAN. Lihat WP(jalur windows) di paket dev laporan.
Tyler Rinker
11

Larutan

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

Penjelasan

R tidak dapat memahami jalur jendela normal dengan benar karena "\"memiliki arti khusus - ini digunakan sebagai karakter escape untuk memberikan arti khusus pada karakter berikut ( \nuntuk baris baru, \tuntuk tab, \runtuk carriage return, ..., lihat di sini ).

Karena R tidak tahu urutan \Uyang dikeluhkannya. Cukup ganti "\"dengan "/"atau gunakan tambahan "\"untuk melepaskan diri "\"dari arti khususnya dan semuanya bekerja dengan lancar.

Alternatif

Di windows, saya pikir hal terbaik yang harus dilakukan untuk meningkatkan alur kerja Anda dengan jalur khusus windows di R adalah menggunakan misalnya, AutoHotkey yang memungkinkan hotkey kustom:

  • tentukan Hotkey, misalnya Cntr- Shift-V
  • menetapkannya prosedur yang menggantikan garis miring terbalik dalam Clipboard Anda dengan garis miring ...
  • kapan pun Anda ingin menyalin, menempelkan jalur ke R, Anda dapat menggunakan Cntr- Shift- Vsebagai ganti Cntr-V
  • Et-voila

Cuplikan Kode AutoHotkey (tautan ke beranda)

^+v::
StringReplace, clipboard, clipboard, \, /, All 
SendInput, %clipboard% 
petermeissner
sumber
5

Solusi saya adalah dengan menentukan cuplikan RStudio sebagai berikut:

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

Potongan ini mengubah garis miring terbalik \menjadi garis miring terbalik ganda \\. Versi berikut akan berfungsi jika Anda lebih suka mengonversi backslahe menjadi garis miring ke depan /.

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

Setelah cuplikan pilihan Anda ditentukan, tempel jalur dari papan klip dengan mengetik p- p- TAB- ENTER(yaitu pp dan kemudian tombol tab lalu enter) dan jalur tersebut akan secara ajaib disisipkan dengan pembatas R ramah.

Josh Gilfillan
sumber
Saya tidak tahu bahwa cuplikan ada di R Studio sampai saya melihat ini. Ini luar biasa.
David
3

Ganti garis miring belakang \ dengan garis miring ke depan / saat menjalankan mesin windows

Matthew J Watts
sumber
2

Mengganti garis miring terbalik dengan garis miring berfungsi untuk saya di Windows.

Ehteshaam
sumber
1

Cara terbaik untuk menangani hal ini dalam kasus file txt yang berisi data untuk penambangan teks (pidato, buletin, dll.) Adalah dengan mengganti "\" dengan "/".

Contoh:

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

Saya tahu ini benar-benar tua, tetapi jika Anda tetap menyalin dan menempel, Anda dapat menggunakan:

read.csv(readClipboard())

readClipboard () lolos dari garis miring ke belakang untuk Anda. Ingatlah untuk memastikan ".csv" disertakan dalam salinan Anda, mungkin dengan ini:

read.csv(paste0(readClipboard(),'.csv'))

Dan jika Anda benar-benar ingin meminimalkan pengetikan Anda, Anda dapat menggunakan beberapa fungsi:

setWD <- function(){
  setwd(readClipboard())
}


readCSV <- function(){
  return(readr::read_csv(paste0(readClipboard(),'.csv')))
} 

#copy directory path
setWD()

#copy file name
df <- readCSV()
Kevin Mc
sumber
0

Saya pikir R membaca '\' dalam string sebagai karakter pelarian. Misalnya \ n membuat baris baru di dalam string, \ t membuat tab baru di dalam string.

'\' akan berfungsi karena R akan mengenali ini sebagai garis miring terbalik normal.

mileslilly2
sumber
0

readClipboard()bekerja secara langsung juga. Salin jalur ke clipboard Anda

C:\Users\surfcat\Desktop\2006_dissimilarity.csv

Kemudian

readClipboard()

muncul sebagai

[1] "C:\\Users\\surfcat\\Desktop\\2006_dissimilarity.csv"
Renay Singh
sumber
-3

Cara yang sederhana adalah dengan menggunakan python. dalam tipe terminal python

r "C: \ Users \ surfcat \ Desktop \ 2006_dissimilarity.csv" dan Anda akan mendapatkan kembali 'C: \ Users \ surfcat \ Desktop \ 2006_dissimilarity.csv'

pengguna3827333
sumber