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


89

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

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

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

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

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

답변:


134

모든 교체 \와 함께 \\.

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


1
이것은 사실입니다. 단순히 \를 \\로 바꾸면 스크립트가 성공적으로 실행됩니다. 감사합니다 Smit !!
Rajeev Kumar Barnwal 2011

이것이 더 나은 대답입니다. C : / Users / ...와 같은 r의 Windows 경로가 작동하며 \\보다 덜 혼동됩니다. ( "\\ 사용자 \\ && 무언가를 CD를 C")는 쉘 같은 쉘 () 호출을 할 때 경로가 \ 함께 할 수있는 유일한 상황입니다
Monduiz

27

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

1
이 글을 쓰려고했는데 먼저 확인해서 다행입니다. 엄청 고마워. 나는 이것이 더 인기있는 패키지 중 하나에 유출되지 않았다는 것에 정말 놀랐습니다 (그냥 놓치고 있지 않는 한). 스크립트에서 이것을 사용할 것이므로 완료되면 약간의 변형을 게시하겠습니다.
Rob

1
이제 보고서 개발 패키지에 포함되어 있으며 결국 CRAN으로 푸시됩니다. 보고서 개발 패키지의 WP(windows 경로) 를 참조하십시오 .
Tyler Rinker 2013-04-29

11

해결책

이 시도: 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% 

5

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

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

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

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

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


나는 이것을 볼 때까지 R Studio에 스 니펫이 존재한다는 것을 몰랐습니다. 굉장합니다.
David

3

Windows 시스템을 실행할 때 백 슬래시 \를 슬래시로 대체하십시오.


2

백 슬래시를 슬래시로 바꾸면 Windows에서 저에게 효과적이었습니다.


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'가 다시 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.