2011-01-10 41 views
5

我正在編寫一個R包,可以在其中創建網絡並以不同的文件類型輸出它們。我發現了包SVGRTipsDevice,它可以用來創建包含工具提示和超鏈接的SVG圖片,我非常喜歡。我將它包含在我的包中作爲輸出的一個選項,使其不是我包裝的重要組成部分,但它的一部分(我想保留)。編寫每個體系結構不同的R包

現在的問題是,該軟件包僅適用於32位用戶。因爲我的軟件包依賴於它,64位用戶無法安裝它。看起來我要麼只是將我的軟件包製作成32位版本,要麼刪除SVG功能(目前我選擇將後者上傳到CRAN,並鏈接到我網站上的完整軟件包)。

有什麼辦法可以做到這一點嗎?就像爲任何人安裝軟件包一樣,只是爲32位用戶提供SVG功能?

+0

當你說「使它不是我的包的重要組成部分,但它的一部分」時,你是否使用建議中的SVGRTipsDevice來構建你的包? – mdsumner 2011-01-10 23:56:59

回答

4

軟件包的DESCRIPTION文件的Suggests:或Enhances:字段中列出的軟件包不需要安裝在用戶的系統上,以便安裝軟件包,以便32/64位用戶可以安裝軟件包。而不是測試比特性,你可能會ok <- suppressWarnings(require(SVGToolTips))),也許在.onLoad或類似。

6

我能想到的最簡單的方法是檢查Sys.info()機器類型:

所以我的機器上:

Sys.info()["machine"] 
machine 
"x86_64" 

編輯我相信,告訴我們的硬件架構,不無論R是32位還是64位。因此,如果用戶有64位硬件和正在運行的32位R,上面的代碼仍然會返回x86_64至於薩沙向我指出的,一個更好的解決方案是運行:

R.Version()$arch 
[1] "x86_64" 

所以你可以看到我運行64位操作系統,我正在運行64位版本的R。

+0

謝謝,這應該是非常有用的! – 2011-01-11 03:39:24

+0

您可以通過以下鏈接獲取R的架構信息:R.Version()$ arch – 2011-01-11 11:20:28

0

您可以使用額外的功能打包packagename-32bit軟件包。