R 프로그래밍을 하다가 아래와 같은 에러메시지를 봤다면, 대부분 read.file
read.table
read.csv
등의 함수로 파일을 읽어오는 과정에서 생기는 오류이다. 에러메시지가 발생하는 이유는 경로지정을 틀리게 했기 때문이다. 경로는 상대경로가 있고, 절대경로 방식이 있는데 그 유형에 따라 각각 대처가 가능하다.
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : cannot open file 'aa.txt': No such file or directory
상대경로로 파일 읽기
상대경로는 아래와 같이 그냥 파일명만 사용해서 읽거나, 루트 디렉토리부터 다 기술하지 않고 현재디렉토리를 기반으로 일부만 기술한 경우를 말한다.
read.table("aa.txt")
read.table("./data/aa.txt")
이런 경우 현재 rstudio 에서 작업디렉토리가 어떻게 되어 있는지 확인해야하는데, 명령어로는 getwd()
로 확인할 수 있다. 여기서 보이는 폴더위치에 본인이 읽으려는 데이터파일을 위치시켜야 한다. 내 경우는 맥북이다보니, 윈도우OS와는 좀 다르게 보인다.
getwd()
[1] "/Users/rstudio"
아마도 window os 였다면 아래 처럼 보일것이다. 그 위치에 읽고 싶은 데이터파일을 넣고, 기존에 호출했던 read 계열의 함수를 사용하면 정상적으로 읽힌다.
getwd()
[1] "c:/Users/rstudio/Documents"
혹시 이렇게 하고 싶지 않고 작업디렉토리를 변경하고 싶다면, setwd
함수를 사용하면 된다. 아래는 예시이며, 본인 데이터 파일이 있는 폴더위치를 셋팅하면 된다. 이렇게 해놓고, 다시 read 함수를 사용하면 된다.
setwd("c:/data")
절대경로로 파일 읽기
상대경로니 폴더위치를 찾아 넣느니 다 귀찮다면, 그냥 파일의 전체경로를 넣어주면 된다. 루트디렉토리부터 전체 경로를 기술해야 하며, 윈도우의 경우 파일 오른쪽 클릭해서 경로를 복사해서 붙여넣으면 편하다. 그 때 주의할 것은 윈도우에서는 \
역슬래쉬로 구분이 되어 있는데, /
로 변경주도록 한다. 그리고, 한글 폴더명이 끼어 있으면 잘 안되는 케이스가 있으니, 폴더명은 영문명으로만 셋팅해서 해볼 것을 권한다.
# mac 혹은 linux os 일때,
read.csv("/Users/rstudio/data.csv")
# 윈도우 os
read.csv("c:/Users/rstudio/Documents/data.csv")