Programing

Windows를 사용하는 R의 파일 경로 문제 ( "문자열의 16 진수"오류)

lottogame 2020. 9. 18. 19:15
반응형

Windows를 사용하는 R의 파일 경로 문제 ( "문자열의 16 진수"오류)


Windows에서 R을 실행하고 데스크톱에 csv 파일이 있습니다. 다음과 같이로드합니다.

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

그러나 R은 다음과 같은 오류 메시지를 제공합니다.

오류 : 'C : \ U'로 시작하는 문자열에서 16 진수없이 '\ U'사용

이 파일을로드하는 올바른 방법은 무엇입니까? Vista를 사용하고 있습니다.


모든 교체 \와 함께 \\.

이 경우 다음 문자를 이스케이프하려고합니다. U그래서 \삽입하려면 이스케이프 \문자 를 삽입 해야합니다.\\


smitec이 이미 올바르게 답변 했으므로이 답변을 올바른 것으로 표시하지 마십시오. Windows 경로를 R에서 작동하는 형식으로 변환하는 .First 라이브러리에 보관하는 편리한 기능을 포함하고 있습니다 (Sacha Epskamp에서 설명하는 방법). 클립 보드에 경로를 복사 (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)
}

해결책

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

설명

R은 "\"특수한 의미를 가지고 있기 때문에 일반 창 경로를 올바르게 이해할 수 없습니다. 다음 문자에 특별한 의미를 부여하기 위해 이스케이프 문자로 사용됩니다 ( \n줄 바꿈, \t탭, \r캐리지 리턴, ..., 여기를보세요 ).

R은 시퀀스를 모르기 \U때문에 불평합니다. 그냥 교체 "\"와 함께 "/"또는 추가를 사용 "\"을 탈출 "\"특별한 의미에서 모든 것이 원활하게 작동합니다.

대안

Windows에서 R의 Windows 특정 경로를 사용하여 워크 플로를 개선하는 가장 좋은 방법은 사용자 지정 핫키를 허용하는 AutoHotkey를 사용하는 것입니다.

  • 핫키 정의, 예 Cntr: Shift--V
  • 클립 보드 내의 백 슬래시를 슬래시로 바꾸는 절차를 할당합니다.
  • 지금 당신은 당신이 사용할 수있는 R에 경로를 붙여 복사 할 때 Cntr- Shift- V대신 Cntr-V
  • Et-voila

AutoHotkey 코드 스 니펫 (홈페이지 링크)

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

내 솔루션다음과 같이 RStudio 스 니펫 을 정의하는 것입니다 .

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

이 스 니펫은 백 슬래시 \를 이중 백 슬래시 변환 합니다 \\. 백 슬래시를 슬래시로 변환하려는 경우 다음 버전이 작동합니다 /.

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

원하는 미리보기가 정의되면, 입력하여 클립 보드에서의 경로를 붙여 p- p- TAB- ENTER(PP 후 탭 키입니다 후 입력) 및 경로 마술 R 친화적 구분 기호로 삽입됩니다.


Replace back slashes \ with forward slashes / when running windows machine


Replacing backslash with forward slash worked for me on Windows.


The best way to deal with this in case of txt file which contains data for text mining (speech, newsletter, etc.) is to replace "\" with "/".

Example:

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

I know this is really old, but if you are copying and pasting anyway, you can just use:

read.csv(readClipboard())

readClipboard() escapes the back-slashes for you. Just remember to make sure the ".csv" is included in your copy, perhaps with this:

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

And if you really want to minimize your typing you can use some functions:

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


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

#copy directory path
setWD()

#copy file name
df <- readCSV()

I think that R is reading the '\' in the string as an escape character. For example \n creates a new line within a string, \t creates a new tab within the string.

'\' will work because R will recognize this as a normal backslash.


readClipboard() works directly too. Copy the path into your clipboard

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

Then

readClipboard()

appears as

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

A simple way is to use python. in python terminal type

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

참고URL : https://stackoverflow.com/questions/8425409/file-path-issues-in-r-using-windows-hex-digits-in-character-string-error

반응형