1

我使用了一个 CRAN 包,其中包含一个子目录“examples/”,其中包含一个文件“ex.txt”。如何访问此文件?

我试过了

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

但随后找不到该文件。当我查看包的安装目录时,确实没有看到“examples/”子目录。但是,当我在包源上运行 R CMD check 和 R CMD INSTALL 时,我没有收到关于“examples/”子目录的警告。所以软件包安装没有问题,但省略了示例。为了访问“examples/”中的文件,我需要做什么?

4

1 回答 1

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")

显然这并不理想,但是由于您在已安装的软件包中找不到该文件,因此我们需要采取某种解决方法...

于 2013-04-04T17:29:31.600 回答