2013-04-04 45 views
1

我使用的CRAN包中包含一個包含「ex.txt」文件的子目錄「examples /」。我如何訪問這個文件?訪問R包中的「examples」子目錄

我試圖

require("XX") 
read.table(paste(.path.package("XX"), "/examples/ex.txt", sep=""), header=TRUE, sep="\t") 

但隨後的文件沒有找到。當我查看包的安裝目錄時,確實看不到「examples /」子目錄。但是,當我在軟件包源上運行R CMD檢查和R CMD INSTALL時,我沒有收到關於「examples /」子目錄的警告。因此,該軟件包沒有問題,但省略了示例。爲了訪問「examples /」中的文件,我需要做些什麼?

+1

我想你可能是出於運氣,除非你可以說服軟件包維護人員將文件移動到一個「.../inst/examples /」目錄下 – 2013-04-04 17:16:30

+0

就是這樣,謝謝! – user1981275 2013-04-15 01:10:40

回答

3

起初我誤解了你的問題,並認爲你是軟件包的作者。問題是,正如你注意到的那樣,安裝時不會複製實例。一個解決方案是讓軟件包作者將文件夾放在/ inst/examples而不是/ examples中。由於您沒有控制權,我們可以通過下載源代碼然後使用它來創建解決方法。

# Downloads the source code for a package 
# Extracts it to a temporary directory 
downloadAndExtract <- function(package, tdir = tempdir()){ 
    down <- download.packages(package, destdir = tdir) 
    targz <- down[,2] 
    untar(targz, exdir = tdir) 
    file.path(tdir, package) 
} 

path <- downloadAndExtract("XX") 
filepath <- file.path(path, "examples", "ex.txt") 
dat <- read.table(filepath, header = TRUE, sep = "\t") 

很顯然,這是不理想,但因爲你不會找到已安裝的軟件包,我們需要採取某種變通辦法的那個文件...