【问题标题】:How do I load a package without installing it in R?如何加载一个包而不在 R 中安装它?
【发布时间】:2011-07-25 23:43:33
【问题描述】:

我已经构建了一个 R 包,但我不希望我的用户在使用它之前必须安装它。

有没有办法在不安装的情况下加载一个包?

例如,如果我有一个包mypackage.tar.gz,是否有类似的东西

library("mypackage.tar.gz")

?

【问题讨论】:

  • 您为什么不希望人们必须安装您的软件包?而且,不,我认为不可能做你想做的事 - 你需要在某处安装文件以使library() 工作,也就是说,AFAIK,在 R 中真正使用包的唯一方法。你可以从任何地方将所有 R 代码源到当前会话中,甚至可以到环境中,因此它看起来 一个包,但是没有帮助,没有加载依赖项等。
  • -1 用于交叉发布到 r-help
  • @Grothendieck 你因为试图在另一个网站上找到答案而对我投反对票???
  • 更多,我猜是不提...

标签: r


【解决方案1】:

我将加入建议您真正安装软件包的“合唱”。

话虽如此,您可以看看 Hadley 的 devtools 包,它可以让您将包加载到工作区中,而不会转储到全局工作区中。

该包必须解压/解压缩并遵循标准 R 包结构。

不过,为了使其正常工作,您的用户必须安装 devtools 软件包,所以...我不确定这对您来说是否是任何类型的胜利。

【讨论】:

  • 更明确的命令是devtools::load_all("path/to/mypkg")
【解决方案2】:

如果您只需要在不安装代码的情况下加载代码,请获取原始 R 脚本并获取它:

source(myScript.R)

如果您有不同的功能,您可以创建一个仅加载所有必要源文件的 R 脚本。我在开发时有时会做的是将我的所有函数命名为 F_some_function.R 和我的类 Class_some_function.R。这允许我获取包含以下代码的主文件:

funcdir <- "C:/Some/Path"
files <- dir(funcdir)
srcfiles <- c(grep("^Class_",dir(funcdir),value=T),
              grep("^F_",dir(funcdir),value=T)
)

for( i in paste(funcdir,srcfiles,sep="/")) source(i)

如果您向他们提供 tar 文件,他们可以在获取主文件之前使用 untar() 自行解压。

但老实说,请使用包。您在全局环境中加载所有内容(如果使用 local=T,则在指定环境中加载),但您失去了包的所有功能。安装软件包并不麻烦,删除也不麻烦。

如果是在 C 盘上写入权限的问题(这是不使用我在职业生涯中遇到的包的唯一可能原因),可以轻松设置另一个库位置。 R 2.12 实际上是在 Windows 上自行完成的。见?.libPaths()

【讨论】:

  • 这里,这里。发明包是有原因的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
相关资源
最近更新 更多