Windows kullanan R'de dosya yolu sorunları ("Karakter dizesinde onaltılık rakamlar" hatası)


89

Windows'ta R çalıştırıyorum ve Masaüstünde bir csv dosyam var. Aşağıdaki gibi yüklerim,

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

ancak R aşağıdaki hata mesajını veriyor

Hata: "C: \ U" ile başlayan karakter dizesinde onaltılık rakamlar olmadan '\ U' kullanıldı

Peki bu dosyayı yüklemenin doğru yolu nedir? Vista kullanıyorum

Yanıtlar:


134

hepsini \ile değiştirin \\.

bu durumda bir sonraki karakterden kaçmaya çalışıyor, bu Uyüzden bir kaçış karakteri eklemeniz \gerekiyor, \bu durumda\\


1
Bu doğrudur, basitçe \ yerine \\ yazın ve komut dosyası başarıyla çalışır. Teşekkürler Smit !!
Rajeev Kumar Barnwal

Bu daha iyi bir cevap. C: / Kullanıcılar / ... gibi r'deki Windows yolu çalışır ve \\ 'den daha az kafa karıştırıcıdır. Yolun \ ile olmasını isteyeceğiniz tek durum, kabuk gibi bir kabuk () çağrısı yaptığınız
zamandır

27

Smitec zaten doğru yanıt verdiği için lütfen bu yanıtı doğru olarak işaretlemeyin. Bir pencere yolunu R'de çalışan biçime dönüştürmeyi sağlayan .First kitaplığıma tuttuğum bir kolaylık işlevi ekliyorum (Sacha Epskamp tarafından açıklanan yöntemler). Yolu panonuza kopyalayın (ctrl + c) ve ardından işlevi olarak çalıştırın pathPrep(). Tartışmaya gerek yok. Yol, konsolunuza doğru bir şekilde yazdırılır ve bir komut dosyasına kolayca yapıştırılması için panonuza yazılır. Umarım bu yardımcı olur.

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
Bunu yazmak üzereydim ve önce kontrol ettiğim için memnunum. Çok teşekkürler. Bunun piyasadaki en popüler paketlerden birine sızmamasına gerçekten şaşırdım (eğer kaçırmıyorsam). Bunu senaryomda kullanacağım, bu yüzden işim bittiğinde küçük varyasyonu göndereceğim.
Rob

1
Artık rapor geliştirme paketinde ve sonunda CRAN'a gönderilecek. Raporlar geliştirme paketindeki WP(Windows yolu) bölümüne bakın .
Tyler Rinker

11

Çözüm

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

Açıklama

R, normal Windows yollarını doğru anlayamaz çünkü "\"özel bir anlamı vardır - kaçış karakteri olarak aşağıdaki karakterlere özel anlam vermek için kullanılır ( \nyeni satır \tiçin, sekme \riçin, satır başı için, ... buraya bir göz atın ).

Çünkü R \Uşikayet ettiği sırayı bilmiyor . Sadece değiştirmek "\"ile "/"veya ek bir kullanma "\"kaçmak için "\"özel anlamı gelen ve her şey pürüzsüz çalışır.

Alternatif

Windows'ta, iş akışınızı R'deki Windows'a özgü yollarla iyileştirmek için yapılacak en iyi şeyin, örneğin özel kısayol tuşlarına izin veren AutoHotkey kullanmak olduğunu düşünüyorum:

  • bir Kısayol tuşu tanımlayın, örneğin Cntr- Shift-V
  • Panonuzdaki ters eğik çizgileri slaches ile değiştiren bir prosedür atar ...
  • Hiç kullanabilirsiniz Ar içine yolu yapıştırın kopyalamak istediğinizde Cntr- Shift- Vyerine Cntr-V
  • Et-voila

AutoHotkey Kod Parçacığı (ana sayfaya bağlantı)

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

5

Benim Çözüm bir tanımlamaktır RStudio pasajı aşağıdaki gibi:

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

Bu pasaj, ters eğik çizgileri \çift ​​ters eğik çizgiye dönüştürür \\. Geriye doğru eğik çizgilere dönüştürmeyi tercih ederseniz, aşağıdaki sürüm çalışacaktır /.

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

Tercih ettiğiniz snippet tanımlandıktan sonra, panodan bir yol yazarak yapıştırın. p - p- TAB- ENTER(yani pp ve ardından sekme tuşu ve ardından girin) ve yol, R dostu sınırlayıcılarla sihirli bir şekilde eklenecektir.


Bunu görene kadar R Studio'da parçacıkların var olduğunu bilmiyordum. Bu harika.
David

3

Ters eğik çizgileri \ eğik çizgilerle / Windows makinesini çalıştırırken değiştirin


2

Ters eğik çizgiyi eğik çizgi ile değiştirmek Windows'ta benim için çalıştı.


1

Metin madenciliği için veri (konuşma, haber bülteni, vb.) İçeren txt dosyası durumunda bununla başa çıkmanın en iyi yolu "\" yerine "/" kullanmaktır.

Misal:

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

1

Bunun gerçekten eski olduğunu biliyorum, ancak yine de kopyalayıp yapıştırıyorsanız, şunları kullanabilirsiniz:

read.csv(readClipboard())

readClipboard () ters eğik çizgilerin dışına çıkar. ".Csv" dosyasının kopyanıza dahil edildiğinden emin olun, belki bununla:

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

Yazmanızı gerçekten en aza indirmek istiyorsanız, bazı işlevleri kullanabilirsiniz:

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


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

#copy directory path
setWD()

#copy file name
df <- readCSV()

0

R'nin dizedeki '\' karakterini bir çıkış karakteri olarak okuduğunu düşünüyorum. Örneğin \ n bir dizge içinde yeni bir satır oluşturur, \ t dizge içinde yeni bir sekme oluşturur.

'\' çalışacaktır çünkü R bunu normal bir ters eğik çizgi olarak tanıyacaktır.


0

readClipboard()doğrudan da çalışır. Yolu panonuza kopyalayın

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

Sonra

readClipboard()

olarak görünür

[1] "C:\\Users\\surfcat\\Desktop\\2006_dissimilarity.csv"

-3

Basit bir yol python kullanmaktır. python terminal tipinde

r "C: \ Users \ surfcat \ Desktop \ 2006_dissimilarity.csv" ve 'C: \ Users \ surfcat \ Desktop \ 2006_dissimilarity.csv'yi geri alacaksınız

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.