如何在不安装R的情况下加载包?

时间:2011-03-30 10:09:37

标签: r

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

有没有办法加载包而无需安装它?

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

的内容
library("mypackage.tar.gz")

2 个答案:

答案 0 :(得分:10)

我会加入“合唱”,暗示你应该真的安装包。

话说回来,你可以看看Hadley的devtools软件包,它可以让你将软件包加载到工作区而不会转储到全局工作区。

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

为了实现这一点,您的用户必须安装devtools软件包,所以......我不确定这是否适合您。

答案 1 :(得分:4)

如果您只需要在未安装代码的情况下加载代码,请使用原始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)

如果您使用tarred文件向他们展示,他们可以在获取主文件之前使用untar()解压自己。

但说实话,请使用包裹。您可以在全局环境中加载所有内容(如果使用local = T,则加载到指定的环境中),但是会丢失软件包的所有功能。安装包没有麻烦,也没有删除。

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