작업 디렉터리를 변경하지 않고 R 스크립트 및 데이터 파일 찾기
필요한 R 스크립트 및 데이터 파일을 참조하기 위해 상대 경로를 사용할 수 있기 때문에 현재 파일의 위치를 R의 작업 디렉토리로 설정하려는 경우가 많습니다. 그러나 작업 디렉토리를 변경하는 것은 이상적인 솔루션이 아닙니다.
이 문서에서는 R Studio 프로젝트, here
패키지 및 file.path()
함수를 결합하여 R이 수동으로 작업 디렉터리를 현재 스크립트 위치로 변경하지 않고 프로젝트에 필요한 파일을 찾을 수 있도록 하는 방법을 보여줍니다.
R 스튜디오 프로젝트
R Studio를 사용하여 R 프로젝트를 생성하면 지정된 폴더에 .Rproj
파일이 생성됩니다.
.Rproj
파일을 열 때:
- 해당 프로젝트 전용 작업 공간이 있는 R Studio의 새 인스턴스를 얻습니다.
.Rproj
가 존재하는 폴더를 작업 디렉토리로 만듭니다.
그러나 이 프로젝트 폴더의 하위 폴더에 있는 .Rmd
파일은 knit
일 때 임시로 작업 디렉토리를 해당 폴더로 변경합니다. 아래에 언급된 here
패키지는 이 문제를 해결합니다.
file.path()
기능
기본 R 함수인 file.path()
를 사용하면 플랫폼 독립적인 방식으로 필요한 파일의 경로를 구성할 수 있습니다.
예를 들어 mydata.csv
파일이 datafiles
라는 하위 폴더에 있는 경우 구문은 다음과 같습니다.
file.path("datafiles", "mydata.csv")
이 함수는 코드가 포함된 스크립트가 실행되는 OS에 대한 올바른 구분 기호를 사용하여 경로를 반환합니다.
여기
패키지
R 프로젝트에서 사용할 때 here
패키지를 사용하면 모든 파일의 경로를 기본 프로젝트 폴더의 상대 경로로 쓸 수 있습니다.
현재 파일 위치에 상대적인 .Rproj
파일을 찾아 이를 수행합니다.
here
패키지를 사용하려면 설치해야 합니다. 다른 사용자 또는 컴퓨터 간에 파일을 공유하는 경우 모든 관련 컴퓨터에 파일을 설치해야 합니다.
다음과 같이 각 스크립트 또는 .Rmd
문서에서 here
패키지를 사용하십시오.
-
먼저
.Rproj
파일이 있는 기본 프로젝트 폴더에 상대적인 현재 파일의 경로로here::i_am()
을 호출합니다.file.path()
함수를 사용하여 이 경로를 코딩하십시오. -
library(here)
로here
패키지를 로드합니다. -
here()
기능을 사용하여 기본 프로젝트 폴더에서 필요한 파일에 대한 상대 경로를 구성합니다. 구문은file.path()
와 유사합니다.그러나
here()
는.Rproj
파일의 위치에 대한 지식을 사용하여 R이 참조 파일을 찾는 데 도움을 줍니다.
예:
# Suppose the folder structure of the project is as follows.
ProjFolder
|___Scripts
| |__MyScript.R
|
|___Data
| |__MyData.csv
|
|__Documents
|__MyRMarkdown.Rmd
# In .R files. The same for .Rmd files.
# First, give the path of this script file relative to the main project folder.
here::i_am(file.path("Scripts", "MyScript.R"))
# Then, load the here package.
library(here)
# Subsequently, use the here() function whenever a path is written.
# Use a relative path from the main project folder.
myvar = read.csv2(here("Data", "MyData.csv"))
제안된 작업 흐름
.Rproj
파일을 열어 프로젝트를 시작합니다. 이렇게 하면 작업 디렉토리가 해당 파일이 포함된 폴더로 설정됩니다.- R Studio의 파일 패널을 사용하여 필요한 파일을 엽니다. 이렇게 하면 올바른 작업 디렉터리가 있는 R Studio의 이 특정 인스턴스에서 열릴 수 있습니다.
- 스크립트 및
.Rmd
파일에서here
패키지를 사용하려면 이전 섹션의 단계를 따르십시오.
전체 프로젝트 폴더는 컴퓨터의 모든 위치에 있을 수 있습니다. 전체적으로 공유할 수 있으며 필요한 소프트웨어가 있는 다른 컴퓨터에서 사용할 수 있습니다.
here()
함수가 다른 패키지와 충돌하는 경우 here::here()
구문을 사용하십시오.
참조
R Studio 프로젝트에 대한 자세한 내용은 R for Data Science를 참조하세요.
here
패키지에 대한 자세한 내용은 먼저 블로그 게시물 이미 프로젝트를 사용하고 있는데 왜 here 패키지를 사용해야 하나요?
를 참조하세요. 그런 다음 여기
의 비네트를 읽으십시오.