2013-12-18 25 views
4

我希望能够从R(3.0.2)内调用R(2.15.3)。为了使用仅在旧版本R中可用的软件包(windows二进制文件,而不是cran文件),这可能吗?从R(3.0.2)调用R(2.15.3)

+11

哪个包是那个? –

+1

为什么不从源码包构建到3.0.2? –

+4

你可以做一个'system()'或'shell()'调用来运行一个R批处理文件(例如'system(“/ path/to/old/R CMD BATCH mybatchfile.R”)'关于你想要做什么的更多上下文可能会有所帮助... –

回答

11

这是R.没有如果,只有如何

西门说布隆贝格。

您可以使用system()以及适当的操作系统中的黑客来调用旧版本的R。这是一件很奇怪的事情,当你沮丧地击中计算机时,会对计算机造成严重损坏。

或者您可以下载包的源代码并在R 3.0中重新构建它。在R中构建和使用软件包的方式有一些相当剧烈的内部变化(最明显的是删除了对没有名称空间的软件包的支持)。

因此:

  • 如果包装没有命名空间:下载源代码(.tar.gz)方式,阅读手册“Writing R extensions”如果你之前没有,并添加空间文件与通常的出口。正如写作R附加解释,这可能是因为添加一行

    exportPattern("^[^\\.]") 
    
  • 如果包有一个命名空间那么简单,从源代码构建你的机器上,你应该是好去。这简直是​​用做:

    install.packages("path/to/package.tar.gz",type="source") 
    

注意,如果你想从源Windows计算机上安装,你需要Rtools的兼容版本:http://cran.r-project.org/bin/windows/Rtools/

如果你不”不想被打扰,请邮寄包裹的作者/维护人员,并且问问他们是否想为你重建它。

+2

从上下文中我们不清楚到目前为止,该包是否不适用于3.0.2,因为它(1)只是没有为3.0构建.2(并且可能有也可能没有任何需要'Rtools'的编译组件);(2)对兼容性要求有微小的调整(例如'NAMESPACE' /'DESCRIPTION'调整);(3)具有非平凡的兼容性问题。 –

+1

我知道,因此有不同的选择,我怀疑当从R 2.15移到R 3.0时存在不小的兼容性问题。至少,我还没有找到一个软件包,其中任何兼容性问题都无法通过简单重建来解决(并且添加一个名字空间文件)。 –