2011-03-30 124 views
7

我已經構建了一個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

回答

9

我會加入「合唱團」建議你真的應該安裝軟件包。

之前已經說過,你可以看看Hadley的devtools軟件包,它可以讓你將軟件包加載到工作區中,而不會在你的全局工作區中傾倒。

該軟件包將被解壓縮/解壓縮,並遵循標準的R軟件包結構。

但是,爲了這個工作,你的用戶將不得不安裝devtools軟件包,所以......我不確定這是否是任何類型的勝利。

3

如果你只需要沒有它被安裝要加載的代碼,把生[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

相關問題