2013-12-18 24 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時存在不小的兼容性問題。至少,我還沒有找到一個軟件包,其中任何兼容性問題都無法通過簡單重建來解決(並且添加一個名字空間文件)。 –