2011-08-28 11 views
10

Ben source() onun aynı dizinde farklı bir dosya içeren bir dosya muktedir istiyorum ama bu dosyayı çalıştırmadan önce R-isteminden çalışma dizinini ayarlamak zorunda kalmak istemiyoruz:Geçerli dizinin R'deki konumunu aynı dizinden dosya içerecek şekilde belirleme?

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

İç/Kullanıcılar/myuser/workspace/myproject, myfile.r ve benim-utils.r olacaktır. myfile.r, içinden source('my-utils.r')'u arar.

Diğer programlama dilleri geçerli dosyanın yolunu belirleyebilir. R benzer bir şey var mı? Örnek: Dosya kaynak yaparken

cur_dir <- sys.get_current_file_path() 
source(file.path(cur_dir, "my-utils.r")) 
chdir seçenek doğru ve kaynak dosya parametresine tam yol olduğunu ayarlanır

cevap

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

, dosyanın dizin çalışma dizini olarak kullanılacaktır.

NOT: cur_dir <- sys.get_current_file_path() pek anlam ifade etmiyor çünkü yol adları benzersiz değil.

+0

30 saniyemi atıyor ... güzel cevap. –

+0

@Apprentice - fonksiyonumun adı muhtemelen kötü seçilmişti. Demek istediğim, bu Python kodu gibi bir şeydi: os.path.realpath (\ _ \ _ dosya \ _ \ _) –

+1

Bu kod/çözümle ilgili sorun, o çağrının işlevselliğini "kaynağa" bağlı olarak ona bağlamasıdır. Bu özel dizin. Buna bağlı olmayan bir çözümün olması, dolan'ın python'dan ilham alan sözde örneğiyle ateş ettiği yaklaşımla başarılabilir. eğer bir şey eksik olsam beni düzelt. – metasoarous

İlgili konular