2017-03-20 312 views
-1

我正在嘗試爲客戶端同步Dev和Prod環境之間的軟件包。 爲此,我需要查找兩個環境中安裝的所有軟件包。R軟件包安裝的版本號

要檢查安裝的所有軟件包我跑以下命令:

installed.packages(fields=c("Package","Version")) 

然而,當我運行這個命令我沒有得到的包的版本。 我剛剛得到R Installed的版本。

見Screenhshot: enter image description here

另外,如果我嘗試運行下面的命令,然後它會給我個人包版本:

packageDescription("packageName")$Version 

有人能幫助我在這裏用的命令,使我可以通過它們各自的版本獲得R(通過Putty命令行)安裝的所有軟件包,以便我可以在Excel中複製這些值並對它們進行比較?

+1

你的截圖方便割去表頭,將已經明確,你展示了「構建」版本,而不是包的版本(這也是在那裏,你只是不顯示在它截圖)。 –

+0

你好對不起,我coudnt顯示它的截圖,但相信我這是R的構建,而不是包版本 –

+0

是的,這是我的評論說的。 R軟件包版本顯示在表中的其他位置。向上滑動。 –

回答

3

installed.packages將始終返回Version列中的軟件包版本。

pkgs <- installed.packages() 
vers <- pkgs[, "Version"] 

這將是一個字符向量,如果您想比較版本,這是一個不方便的字符向量。 package_version函數將像「3.3.2」這樣的字符串轉換爲更適合該任務的對象。

package_version(vers["stats"]) 
# '3.3.2' 

package_version(vers["stats"]) > package_version("3.1") 
# TRUE 

package_version(vers["stats"]) == packageVersion("stats") # note function names 
# TRUE 
+0

當我跑得installed.packages我得到以下錯誤: 功能(lib.loc = NULL,優先級= NULL,非緩存= FALSE,田= NULL, 子體系= .Platform $ r_arch) { 如果(如果(!is.null(priority)){(如果(is.character(priority))) stop是字符或NULL「) –