2010-03-19 59 views
2

我創建了自己的新R庫(稱爲「Media」)。當我嘗試使用RGUI加載時,沒有任何問題,我可以調用新包中定義的函數。這是我如何加載:加載R在Java/JRI代碼中自己創建的庫問題

> library(Media) 

但是,我也想呼籲,從Java/JRI代碼,當我加載新的R包,Java的似乎並沒有找到pacakge,扔功能消息「在圖書館錯誤(媒體):對象‘媒體’找不到」

這是使用JRI我當前的代碼:

REXP rexpSetFolder = re.eval("setwd('C:/Users/Albert/Documents')"); 
    REXP rexpFolder = re.eval("getwd()"); 
    System.out.println(rexpFolder.asString()); 

    REXP rexpLoad = re.eval("library(Media)"); // fails 

它也不能沒有「setwd」命令,簡單的調用現有的R函數正常工作。我在Windows下使用R 2.10和最新的JRI 0.5-0。

任何幫助,將不勝感激。 非常感謝。

編輯:

參數lib.loc似乎工作,至少這句話不返回一個錯誤:

library("Media", lib.loc = "c:/Users/Albert/Documents") 

但在那之後,調用一個包中的功能與re.eval("myfunction()");仍然失敗,因爲功能沒有找到。

回答

1

您是否先正確安裝了庫?您可能想嘗試使用lib.loc參數。

library("Media", lib.loc = "c:/Users/Albert/Documents") 
+0

我會試試它,但奇怪的是,我可以在沒有直接在RGUI中出現問題的情況下執行相同的代碼。謝謝。 – 2010-03-19 14:59:07

+0

該句似乎與參數「lib.loc」一起使用,但之後,在包名爲「media」的包中使用re.eval(「media(t)」)調用函數;仍然失敗,並有消息說,它無法找到「媒體」功能... – 2010-03-22 09:00:48

1

我的工作,周圍是包從我的個人圖書館(%USERPROFILE%\文件\ R)複製到全局庫(%R_HOME%\庫)。

,因爲這需要管理員權限,並非所有用戶都會有它不是最好的...

+0

很遺憾,我沒有找到解決方案(您的解決方案似乎是一個很好的解決方案)。我最終在re.eval調用中插入了函數,而不是將它們作爲庫的一部分(正如我試圖做的那樣)。 – 2010-12-09 22:33:07

3

您可以修改庫路徑 - 見R中?.libPaths,你只是想你的私人圖書館添加到路徑。 GUI爲你做,但如果你在外面,它不會發生。例如:

re.eval(".libPaths('c:/users/foo/Documents/R')"); 

然後加載你的包。

+0

這對我很有用。但是我不得不在Windows中使用'''re.eval(「。libPaths('c:/users/foo/Documents/R/win-library/3.2')」);'。 – 2016-01-21 22:08:48