r - विंडोज़ का उपयोग कर आर में फाइल पथ मुद्दे("चरित्र स्ट्रिंग में हेक्स अंक" त्रुटि)




filepath backslash (7)

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

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

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

त्रुटि: '\ U' वर्ण स्ट्रिंग में हेक्स अंकों के बिना प्रयोग किया जाता है "सी: \ यू"

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


अगली स्लैश / विंडोज मशीन चलते समय वापस स्लेश को बदलें


कृपया इस प्रतिक्रिया को सही के रूप में चिह्नित न करें क्योंकि smitec पहले ही सही ढंग से उत्तर दे चुका है। मैं एक सुविधा समारोह भी शामिल कर रहा हूं जो मैं रखता हूं। पहली लाइब्रेरी जो आर में काम करने वाले प्रारूप के लिए विंडोज पथ को परिवर्तित करती है (सच्चा एप्सकैम्प द्वारा वर्णित विधियों)। बस अपने क्लिपबोर्ड (ctrl + c) पर पथ कॉपी करें और फिर पथ को pathPrep() रूप में 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)
}

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

आर "सी: \ उपयोगकर्ता \ सर्फकैट \ डेस्कटॉप \ 2006_dissimilarity.csv" और आप वापस आ जाएंगे 'सी: \ उपयोगकर्ता \ सर्फकैट \ डेस्कटॉप \ 2006_dissimilarity.csv'


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

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()

विंडोज़ पर मेरे लिए फॉरवर्ड स्लैश के साथ बैकस्लैश को बदलना।


मेरा समाधान निम्नानुसार एक रूस्टूडियो स्निपेट को परिभाषित करना है:

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

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

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

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


उपाय

इसे आज़माएं: x <- read.csv("C:/Users/surfcat/Desktop/2006_dissimilarity.csv", header=TRUE)

व्याख्या

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

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

विकल्प

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

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

ऑटोहॉटकी कोड स्निपेट (होमपेज से लिंक)

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






path-separator