[r] Rstudio에서 작업 디렉토리를 소스 파일 위치로 설정하기위한 R 명령

R에서 자습서를 만들고 있습니다. 각 R 코드는 특정 폴더에 포함되어 있습니다. 거기에 데이터 파일과 다른 파일이 있습니다. .r파일 을 열고 소스를 지정하여 아래와 같이 Rstudio에서 작업 디렉토리를 변경할 필요가 없습니다.

여기에 이미지 설명을 입력하십시오

R에서 작업 디렉토리를 자동으로 지정하는 방법이 있습니까?



답변

소스 스크립트의 위치를 ​​확인하려면 utils::getSrcDirectory또는 을 사용할 수 있습니다 utils::getSrcFilename. 따라서 작업 디렉토리를 현재 파일의 디렉토리로 변경하려면 다음을 수행하십시오.

setwd(getSrcDirectory()[1])

소스 코드가 아닌 코드 를 실행 하면 RStudio에서 작동하지 않습니다 . 이를 위해서는을 사용해야 합니다.rstudioapi::getActiveDocumentContext

setwd(dirname(rstudioapi::getActiveDocumentContext()$path))

이 두 번째 솔루션은 물론 RStudio를 IDE로 사용해야합니다.


답변

나는이 질문이 오래되었다는 것을 알고 있지만 그에 대한 해결책을 찾고 있었고 Google은 이것을 맨 위에 나열합니다.

this.dir <- dirname(parent.frame(2)$ofile)
setwd(this.dir)

파일의 어딘가에 넣으십시오 (그러나 가장 좋은 것은 시작일 것입니다) .wd는 해당 파일에 따라 변경됩니다.

의견에 따르면, 이것은 모든 플랫폼에서 작동하지 않을 수도 있습니다 (Windows는 Linux / Mac에서 작동하는 것으로 보입니다). 이 솔루션은 파일을 ‘소싱’하기위한 것이며 반드시 해당 파일에서 청크를 실행하기위한 것은 아닙니다.

`source`d 파일의 파일 이름과 경로를 참조하십시오.


답변

dirname(rstudioapi::getActiveDocumentContext()$path)

나를 위해 작동하지만 rstudioapi 를 사용하지 않고 proyect가 아닌 경우 경로에 ~ 기호를 사용할 수 있습니다. ~ 기호는 기본 RStudio 작업 디렉토리를 나타냅니다 (적어도 Windows에서는).

RStudio 옵션

RStudio 작업 디렉토리가 “D : / Documents”인 경우 setwd("~/proyect1")setwd ( “D : / Documents / proyect1”)와 동일합니다.

일단 설정하면 하위 디렉토리로 이동할 수 있습니다 read.csv("DATA/mydata.csv"). 와 동일합니다 read.csv("D:/Documents/proyect1/DATA/mydata.csv").

상위 폴더로 이동하려면을 사용할 수 있습니다 "../". 예를 들면 다음 read.csv("../olddata/DATA/mydata.csv")과 같습니다.read.csv("D:/Documents/oldata/DATA/mydata.csv")

이것은 어떤 컴퓨터를 사용하든 스크립트를 코딩하는 가장 좋은 방법입니다.


답변

이 답변이 도움이 될 수 있습니다.

script.dir <- dirname(sys.frame(1)$ofile)

참고 : 올바른 경로를 반환하려면 스크립트를 소싱해야합니다.

https://support.rstudio.com/hc/communities/public/questions/200895567-can-user-obtain-the-path-of-current-Project-s-directory- 에서 찾았습니다.

BumbleBee의 답변 (parent.frame 대신 sys.frame 사용)이 작동하지 않아 항상 오류가 발생합니다.


답변

들어 rstudio , 당신은 자동으로 사용하여 스크립트 디렉토리로 작업 디렉토리를 설정할 수 있습니다 rstudioapi을 그렇게 :

library(rstudioapi)

# Getting the path of your current open file
current_path = rstudioapi::getActiveDocumentContext()$path
setwd(dirname(current_path ))
print( getwd() )

파일을 실행하거나 소싱 할 때 작동합니다.

rstudioapi 패키지를 먼저 설치해야합니다. 올바른 경로에 100 % 확신하도록 경로를 인쇄하지만 선택 사항입니다.


답변

해결책

dirname(parent.frame(2)$ofile)

나를 위해 작동하지 않습니다.

나는 무차별 대입 알고리즘을 사용하고 있지만 작동합니다.

File <- "filename"
Files <- list.files(path=file.path("~"),recursive=T,include.dirs=T)
Path.file <- names(unlist(sapply(Files,grep,pattern=File))[1])
Dir.wd <- dirname(Path.file)

디렉토리를 검색 할 때 더 쉽게 :

Dirname <- "subdir_name"
Dirs <- list.dirs(path=file.path("~"),recursive=T)
dir_wd <- names(unlist(sapply(Dirs,grep,pattern=Dirname))[1])


답변

Linux에서 작업하는 경우 다음을 시도하십시오.

setwd(system("pwd", intern = T) )

그것은 나를 위해 작동합니다.