2017-03-23 60 views
1

我想知道在開發R包時是否可以列出目錄中的文件。從this頁面,我讀了system.file()應該用來引用包含在一個R包中的文件。但是,這似乎不適用於目錄。我在尋找如何在一個特定的目錄列表文件:一個「A」的「出師表」目錄下,然後我會用:從/ inst目錄中列出用於開發R包的文件

list.files(system.file("a/", package = [package_name])) 

list.files(system.file("a", package = [package_name])) 

然而,這並沒有工作並返回一個空字符串。此外,例如,在一個包中引用一系列.sql文件可能是不好的做法嗎?

+0

我想你忘了inst。嘗試'list.files(system.file(「inst」,「a」,package = [package_name]))'。 package參數指向包的根文件夾,而不是任何隨機文件夾。 – takje

+0

是的,你是對的。我檢查了爲什麼,我在某處使用了devtools :: load_all()。在此之前,它完美無缺地運行。現在我懷疑哪個版本是正確的。 – Michael

回答

0

system.file(package = 'package_name')返回包目錄根目錄的絕對路徑(literaly從?system.file)。但是,devtools將覆蓋此函數,並將其替換爲程序包工作目錄的絕對路徑(從您啓動load_all()命令的路徑)(如果需要的話)。

但是,當包不存在時(例如system.file(package = 'non_existing_package')),路徑將返回相對路徑。

> system.file('a', package = 'existing_package') 
"C:/.../package_directory/a" 
> system.file('a', package = 'non_existing_package') 
"a" 

根據您的工作目錄的設置,這可能在某些情況下有效。

相關問題