2011-08-28 14 views
10

Chcę móc source() plik, który zawiera inny plik w tym samym katalogu, ale nie chcę, aby ustawić katalog roboczy z R-wierszu przed uruchomieniem tego pliku:Określanie lokalizacji bieżącego pliku w R w celu uwzględnienia pliku z tego samego katalogu?

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

Wewnątrz/Users/myuser/workspace/myproject znajdą się pliki myfile.r i my-utils.r. myfile.r dzwoni pod numer source('my-utils.r').

Inne języki programowania mogą określać ścieżkę bieżącego pliku. Czy R ma coś podobnego? Przykład:

cur_dir <- sys.get_current_file_path() 
source(file.path(cur_dir, "my-utils.r")) 

Odpowiedz

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

Kiedy chdir opcja jest ustawiona na true, a parametr plik źródłowy jest pełną ścieżkę, katalog pliku zostanie użyty jako katalog roboczy podczas pozyskiwania pliku.

UWAGA: cur_dir <- sys.get_current_file_path() nie ma większego sensu, ponieważ nazwy ścieżek nie są unikalne.

+0

pokonaj mnie o 30 sekund ... dobra odpowiedź. –

+0

@Apprentice - moja funkcja została prawdopodobnie źle wybrana. Miałem na myśli coś w rodzaju tego kodu Pythona: os.path.realpath (\ _ \ _ file \ _ \ _) –

+1

Problem z tym kodem/rozwiązaniem polega na powiązaniu funkcji tego wywołania z 'source' z istniejącym w ten konkretny katalog. Byłoby dobrze mieć rozwiązanie, które nie zależało od tego, co byłoby możliwe do osiągnięcia dzięki podejściu, do którego dolan strzelał z jego pseudo-inspirowanym pytonem. popraw mnie, jeśli czegoś brakuje. – metasoarous

Powiązane problemy