【问题标题】:Package Relative Paths in R在 R 中打包相对路径
【发布时间】:2012-08-12 05:27:15
【问题描述】:

我已经为使用相对路径的包编写了一些函数,例如:

"./data/foobar.rds"

这是一个示例函数:

foo <- function(x) { 
x <- readRDS("./data/bar.rds")
return(x)
}

现在,如果我要在包的开发路径中工作,这将按我的预期工作。但是当我加载包时,这个路径使用的是当前工作目录,而不是包的相对路径。

如何设置它以使包中函数的路径保持它们在包中的相对路径?

【问题讨论】:

  • ?system.file?.path.package
  • 那么,像x &lt;- readRDS(paste(system.file(package="pkgName"),"/data/bar.rds",sep=""))?
  • 如果你想要一些独立于操作系统的东西,试试 x readRDS(file.path(system.file(package = "pkgName"), "data", "bar.rds"))

标签: r r-package


【解决方案1】:

正如 Andrie 所说,您可以使用 system.file,它“在包等中查找文件的完整文件名”

x <- readRDS(system.file("help", "aliases.rds", package="MASS"))

【讨论】:

  • dir(system.file("help", package = "MASS"))
  • @BrandonBertelsen -- 对system.file() 的调用解析为&lt;your-R-library-location&gt;/MASS/help/aliases.rds,这是要读取的文件所在的位置。 (所有初始的未命名参数都被... 吸收,system.file() 将其视为一组子目录和文件,从中构造给定包中的路径。)
猜你喜欢
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 2014-03-30
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多