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

问题描述:

我已经构建了一个R包,但我不希望我的用户在使用它之前必须安装它。如何在不安装R的情况下加载软件包?

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

举例来说,如果我有一个包mypackage.tar.gz,是有什么样

library("mypackage.tar.gz") 

+0

为什么你不希望人们必须安装你的软件包?而且,不,我不认为有可能做你想做的事情 - 你需要在'library()'的某个地方安装这些文件,也就是AFAIK,这是真正在R中使用包的唯一方法。你可以从任何地方将所有R代码发送到当前会话中,甚至可以将其发送到一个环境中,这样看起来就像*一个包,但没有任何帮助,不会加载依赖关系等。 – 2011-03-30 10:18:37

+2

-1用于交叉发布到r-help – 2011-03-30 12:07:15

+2

@Grothendieck你是否正试图在另一个网站上找到答案? – lindelof 2011-03-30 12:42:40

我会加入“合唱团”建议你真的应该安装软件包。

之前已经说过,你可以看看Hadley的devtools软件包,它可以让你将软件包加载到工作区中,而不会在你的全局工作区中倾倒。

该软件包将被解压缩/解压缩,并遵循标准的R软件包结构。

但是,为了这个工作,你的用户将不得不安装devtools软件包,所以......我不确定这是否是任何类型的胜利。

如果你只需要没有它被安装要加载的代码,把生[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) 

,他们可以自己使用untar()采购的主要文件之前解压。

但说实话,请使用一个包。你在全局环境中(或者如果你使用local = T,在指定的环境中)加载所有的东西,但是你失去了一个包的所有功能。安装软件包并不麻烦,也不会删除。

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

+0

这里,在这里。软件包是有原因发明的! – 2011-03-30 12:28:17