2011-08-28 9 views
10

나는 source()의 같은 디렉토리에 다른 파일을 포함하는 파일을 할 수 있도록하려면,하지만 난이 파일을 실행하기 전에 R-프롬프트에서 작업 디렉토리를 설정해야하고 싶지 않은 :동일한 디렉토리의 파일을 포함하려면 R에서 현재 파일의 위치를 ​​결정 하시겠습니까?

> getwd() 
[1] "/Users/myser" 
> source("/Users/myuser/workspace/myproject/myfile.r") 

/users/myuser/workspace/myproject 내부에는 myfile.r과 my-utils.r이 있습니다. myfile.r은 source('my-utils.r')을 호출합니다.

다른 프로그래밍 언어가 현재 파일의 경로를 결정할 수 있습니다. R도 비슷한가요? 예 : 파일을 소싱하면서

cur_dir <- sys.get_current_file_path() 
source(file.path(cur_dir, "my-utils.r")) 
chdir 옵션이 true 소스 파일 매개 변수에 대한 전체 경로입니다 설정

답변

11
source("/Users/myuser/workspace/myproject/my-utils.r", chdir=TRUE) 

, 파일의 디렉토리를 작업 디렉토리로 사용됩니다.

참고 : 경로 이름이 고유하지 않기 때문에 cur_dir <- sys.get_current_file_path()은별로 의미가 없습니다.

+0

30 초에이긴 ... 멋진 답변. –

+0

@Apprentice - 내 함수 이름이 잘못 선택되었을 수 있습니다. 나는이 Python 코드와 같은 것을 의미했다. os.path.realpath (\ _ \ _ file \ _ \ _) –

+1

이 코드/솔루션의 문제점은 기존의'source'에 대한 호출의 기능을 그 특정 디렉토리. dolan이 그의 파이썬에서 영감을 얻은 의사 예제를 사용하여 촬영 한 접근 방식으로 달성 할 수있는 것과 같이 이것에 의존하지 않는 해결책을 갖는 것이 좋을 것입니다. 내가 뭔가를 놓치고 있다면 나를 바로 잡아라. – metasoarous

관련 문제