从R(3.0.2)内部调用R(2.15.3)
我希望能够从R(3.0.2)中调用R(2.15.3)。为了使用仅在较旧版本的R中可用的软件包(windows二进制,不在cran上)。这是否可能 这是R。没有如果,只有如何 西蒙·布隆伯格说 您可以使用从R(3.0.2)内部调用R(2.15.3),r,R,我希望能够从R(3.0.2)中调用R(2.15.3)。为了使用仅在较旧版本的R中可用的软件包(windows二进制,不在cran上)。这是否可能 这是R。没有如果,只有如何 西蒙·布隆伯格说 您可以使用system()调用旧版本的R,并在您的操作系统中使用相应的hack。这是一件很奇怪的事情,当你沮丧地撞到你的电脑时,它可能会给你的电脑带来严重的损害 或者您可以下载包的源代码并在R3.0中重建它。在R中构建和使用包的方式发生了一些相当激烈的内部变化(最明显的是取消了对没有名称空间的包的支持) 因
system()
调用旧版本的R,并在您的操作系统中使用相应的hack。这是一件很奇怪的事情,当你沮丧地撞到你的电脑时,它可能会给你的电脑带来严重的损害
或者您可以下载包的源代码并在R3.0中重建它。在R中构建和使用包的方式发生了一些相当激烈的内部变化(最明显的是取消了对没有名称空间的包的支持)
因此:
- 如果包没有名称空间:下载源(.tar.gz),如果以前没有,请阅读手册“”,然后添加一个带有常用导出的名称空间文件。正如在编写R扩展时所解释的,这可以像添加一行一样简单
exportPattern("^[^\\.]")
- 如果这个包有一个名称空间,那么在您的机器上从源代码构建,您就可以开始了。这只需使用以下方法即可完成:
install.packages("path/to/package.tar.gz",type="source")
如果您不想为它烦恼,请将邮件发送给包的作者/维护者,并询问他们是否愿意为您重建它。这是哪个包?为什么不从包源代码构建到3.0.2?您可以调用
system()
或shell()
来运行R批处理文件(例如system(“/path/to/old/R CMD BATCH mybatchfile.R”)
,但稍微多了解一下您尝试执行的操作可能会有所帮助……从目前的上下文来看,我们还不清楚此包是否不适用于3.0.2,因为它(1)只是没有为3.0.2构建(并且可能有或可能没有任何需要Rtools
)的编译组件;(2)具有兼容性所需的微小调整(例如名称空间
/说明
调整);(3)存在非平凡的兼容性问题。我知道。因此有不同的选项。我怀疑从R2.15迁移到R3.0时是否存在非平凡的兼容性问题。至少,我还没有发现一个包,其中任何兼容性问题都不能通过简单地重建(并添加命名空间文件)来解决。