Windows का उपयोग करके आर में फ़ाइल पथ समस्याएँ ("वर्ण स्ट्रिंग में हेक्स अंक" त्रुटि)


89

मैं विंडोज पर आर चलाता हूं, और डेस्कटॉप पर एक सीएसवी फाइल है। मैं इसे इस प्रकार लोड करता हूं,

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

लेकिन R निम्न त्रुटि संदेश देता है

त्रुटि: "\ U 'वर्ण स्ट्रिंग में हेक्स अंकों के बिना" C: \ U "शुरू होता है।

तो इस फाइल को लोड करने का सही तरीका क्या है। मैं विस्टा का उपयोग कर रहा हूं

जवाबों:


134

सभी के \साथ बदलें \\

यह इस मामले में अगले चरित्र से बचने की कोशिश कर रहा है Uताकि \आपको सम्मिलित होने के लिए एक बच निकलने की आवश्यकता हो \जो कि हो\\


1
यह सच है कि केवल \\ की जगह \ स्क्रिप्ट और स्क्रिप्ट सफलतापूर्वक चलती है। धन्यवाद Smit !!
राजीव कुमार बरनवाल

यह एक बेहतर जवाब है। C: / उपयोगकर्ता / ... जैसे कार्य में Windows से पथ और \\ से कम भ्रामक है। एक ही स्थिति है जहाँ आप चाहते हैं कि जब आप एक शेल (जैसे) शेल ("cd C: \\ उपयोक्ता \\ && कुछ करें") के दौरान
पथ \ _ के साथ रहना चाहते हैं

27

कृपया इस प्रतिक्रिया को सही न मानें क्योंकि smitec पहले ही सही उत्तर दे चुका है। मैं एक सुविधा समारोह में शामिल हूं, जो मैं अपनी पहली। लाइब्रेरी में रखता हूं, जो आर में काम करने वाले प्रारूप (सच्चा एप्सकैंप द्वारा वर्णित विधियों) में एक विंडोज़ पथ को परिवर्तित करता है। बस अपने क्लिपबोर्ड (ctrl + c) के लिए पथ को कॉपी करें और फिर फ़ंक्शन को इस रूप में चलाएं pathPrep()। किसी तर्क की जरूरत नहीं। पथ को आपके कंसोल पर सही ढंग से मुद्रित किया गया है और स्क्रिप्ट पर आसान चिपकाने के लिए आपके क्लिपबोर्ड पर लिखा गया है। आशा है कि यह उपयोगी है।

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
मैं इसे लिखने वाला था और मुझे खुशी है कि मैंने पहले जाँच की। अनेक अनेक धन्यवाद। मैं वास्तव में आश्चर्यचकित हूं कि यह अधिक लोकप्रिय पैकेज में से एक में लीक नहीं हुआ है (जब तक कि मैं इसे याद नहीं कर रहा हूं)। मैं अपनी स्क्रिप्ट में इसका उपयोग करने जा रहा हूं, इसलिए जब मैं करूंगा तो थोड़ी भिन्नता पोस्ट करूंगा।
रोब

1
यह अब रिपोर्ट्स के विकास पैकेज में है और इसे अंततः CRAN में धकेल दिया जाएगा। रिपोर्ट पैकेज में देखें WP(विंडोज़ पथ)
टायलर रिंकर

11

समाधान

इसे इस्तेमाल करे: x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

व्याख्या

R सामान्य विंडो पथों को सही ढंग से समझने में सक्षम नहीं है क्योंकि "\"इसका विशेष अर्थ है - इसका उपयोग एस्केप कैरेक्टर के रूप में निम्न वर्णों को विशेष अर्थ देने के लिए किया जाता है ( \nन्यूलाइन के लिए, \tटैब के लिए, \rगाड़ी वापसी के लिए, ..., यहाँ एक नज़र डालें )।

क्योंकि R को उस अनुक्रम की जानकारी नहीं है जो \Uइसकी शिकायत करता है। बस के "\"साथ बदलें "/"या अपने विशेष अर्थ से "\"बचने के लिए एक अतिरिक्त का उपयोग करें "\"और सब कुछ सुचारू रूप से काम करता है।

विकल्प

खिड़कियों पर, मुझे लगता है कि R में विंडोज़ विशिष्ट पथों के साथ अपने वर्कफ़्लो को बेहतर बनाने के लिए सबसे अच्छी बात यह है कि उदाहरण के लिए AutoHotkey का उपयोग करें जो कस्टम हॉटकीज़ के लिए अनुमति देता है:

  • हॉटकी परिभाषित करें, जैसे Cntr- Shift-V
  • इसे एक ऐसी प्रक्रिया प्रदान करता है, जो आपके क्लिपबोर्ड में बैकस्लैश को स्लैश के साथ बदल देता है ...
  • जब भी आप आर में एक पथ को कॉपी करना चाहते हैं तो आप इसका उपयोग कर सकते हैं Cntr- Shift- के VबजायCntr -V
  • एट-देखा

AutoHotkey कोड स्निपेट (मुखपृष्ठ पर लिंक)

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

5

मेरा समाधान एक RStudio स्निपेट को इस प्रकार परिभाषित करना है:

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

यह स्निपेट बैकस्लैश \को डबल बैकस्लैश में परिवर्तित करता है \\। यदि आप बैकस्लेस को फ़ॉरवर्ड स्लैश में बदलना चाहते हैं तो निम्न संस्करण काम करेगा /

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

एक बार जब आपका पसंदीदा स्निपेट परिभाषित हो जाता है, तो क्लिपबोर्ड से एक पथ को टाइप करके पेस्ट करें p- p- TAB- ENTER(वह पीपी है और फिर टैब कुंजी और फिर दर्ज करें) और पथ को मैत्रीपूर्ण रूप से आर फ्रेंडली सीमांकक के साथ डाला जाएगा।


मुझे नहीं पता था कि स्निपेट्स आर स्टूडियो में मौजूद थे जब तक कि मैंने यह नहीं देखा। यह कमाल का है।
डेविड


2

आगे स्लैश के साथ बैकस्लैश को बदलना मेरे लिए विंडोज पर काम करता है।


1

Txt फ़ाइल के मामले में इससे निपटने का सबसे अच्छा तरीका है जिसमें पाठ खनन (भाषण, समाचार पत्र, आदि) के लिए डेटा शामिल है, "\" को "/" से बदलना है।

उदाहरण:

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

1

मुझे पता है कि यह वास्तव में पुराना है, लेकिन अगर आप वैसे भी कॉपी और पेस्ट कर रहे हैं, तो आप बस उपयोग कर सकते हैं:

read.csv(readClipboard())

readClipboard () आपके लिए बैक-स्लैश से बच जाता है। बस यह सुनिश्चित करना याद रखें कि ".csv" आपकी कॉपी में शामिल है, शायद इसके साथ:

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

और यदि आप वास्तव में अपनी टाइपिंग को कम करना चाहते हैं तो आप कुछ कार्यों का उपयोग कर सकते हैं:

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


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

#copy directory path
setWD()

#copy file name
df <- readCSV()

0

मुझे लगता है कि R स्ट्रिंग में '\' को एस्केप कैरेक्टर के रूप में पढ़ रहा है। उदाहरण के लिए \ n स्ट्रिंग के भीतर एक नई लाइन बनाता है, \ t स्ट्रिंग के भीतर एक नया टैब बनाता है।

'\' काम करेगा क्योंकि R इसे एक सामान्य बैकस्लैश के रूप में मान्यता देगा।


0

readClipboard()सीधे भी काम करता है। अपने क्लिपबोर्ड में पथ की प्रतिलिपि बनाएँ

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

फिर

readClipboard()

के रूप में प्रकट होता है

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

-3

अजगर का उपयोग करने का एक सरल तरीका है। अजगर टर्मिनल प्रकार में

r "C: \ Users \ surfcat \ Desktop \ 2006_dissimilarity.csv" और आपको 'C: \ Users \ surfcat \ Desktop \ 2006_dissimilarity.csv' मिल जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.