這里介紹的就是R的一個包:installr。
installr {installr} R Documentation
Installing software from R
Description
Gives the user the option to download software from within R.
上面是installr的官方文檔介紹。
接下來來講所謂的一行代碼更新R語言。
這里有兩個注意點:
1.你的installr必須跟你的R版本對應,因為R語言默認安裝的包都是適配最新的R語言版本。
2.使用installr更新R語言必須在管理員權限運行原生R里面,Rstudio里面無法進行(筆者沒有嘗試過其他R的IDE,有童鞋若有嘗試也可以進行指正)。
#安裝installr install.packages(installr) library(installr) updater()#就是這句。真得勁。一鍵更新
這個方法的好處在於,你可以不用重新安裝你已經有的包。可以完整保留。
注意:安裝時如果提問是否安裝需要編譯的源代碼包, 最好選擇否, 因為安裝源代碼包速度很慢還有可能失敗。
安裝完installr包后可以看到RGui中出現了installr選項
注意:在下載完R新版本后,跳出安裝程序,這里安裝目錄應該和你舊版本的R在一個目錄下
可以看到R console提示框中顯示I am now copying 203 packages from 舊的版本到新版本
等一會兒后。。。。。。。
出現所有包復制到新位置,然后把包從舊版本中移除等動作。。。。
到R-3.5.2中看到所有包到移動到了新位置library中
備注:更詳細操作請看北大R教程中http://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/intro.html,內容如下:
1.3 R擴展軟件包的安裝與管理
1.3.1 安裝
R有一萬多個擴展軟件包,提供了各種各樣的功能。 以安裝sos包為例。sos包用來搜索某些函數的幫助文檔。 在RStudio中用“Tools”菜單的“Install Packages”安裝, 輸入sos就可以安裝該擴展包。
如果不用RStudio, 在R圖形界面選菜單“程序包-安裝程序包”, 在彈出的“CRAN mirror”選擇窗口中選擇一個中國的鏡像如“China (Beijing 2)”, 然后在彈出的“Packages”選擇窗口中選擇要安裝的擴展軟件包名稱, 即可完成下載和安裝。
還可以用如下程序制定鏡像網站(例子中是位於清華大學的鏡像網站)並安裝指定的擴展包:
options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/")) install.packages("sos")
還可以選擇擴展包的安裝路徑, 如果權限允許, 可以選擇安裝在R軟件的主目錄內或者用戶自己的私有目錄位置。 由於用戶的對子目錄的讀寫權限問題, 有時不允許一般用戶安裝擴展包到R的主目錄中。 用.libPaths()
查看允許的擴展包安裝位置, 在install.packages()
中用lib=
指定安裝位置:
print(.libPaths()) ## [1] "D:/R/R-3.3.1/library" install.packages("sos", lib=.libPaths()[1])
1.3.2 Github和BioConductor的擴展包
還有一些擴展包沒有在CRAN系統提供, 而是放在了Github網站。 對於這樣的包, 安裝方法舉例如下:
if(!require(devtools)) install.packages('devtools') devtools::install_github("kjhealy/socviz")
其中kjhealy
是Github網站的某個作者的名稱, socviz
是該作者名下的一個R擴展包。
還有一些包需要從Bioconductor網站安裝。 示例如下:
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install(c("Biostrings"))
1.3.3 更新擴展包
在RStudio中用“Tools–Check for Package Updates”菜單, 可以顯示有新版本的擴展包, 並選擇進行更新。
或者在命令行用如下命令更新本地安裝的所有有新版本的CRAN擴展包:
options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/")) update.packages(checkBuilt=TRUE, ask=FALSE)
RStudio在運行時會載入某些包, 如rlang, 這使得RStudio無法更新這些包, 需要在R的命令行程序中更新。
1.3.4 遷移擴展包
在每一次R軟件更新后, 需要重新安裝原來的軟件包, 這個過程很麻煩。 如果僅僅是小的版本更新, 比如從3.5.1變成3.5.2, 或者從3.4.2變成3.5.0, 可以在安裝新版本后, 臨時將新版本的library子目錄更名為library0, 將老版本的library子目錄剪切為新版本的library子目錄, 然后將library0中所有內容復制並覆蓋進入library子目錄, 刪除library0即可。 然后在基本R中(不要用RStudio)運行如下命令以更新有新版本的包:
options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/")) update.packages(checkBuilt=TRUE, ask=FALSE)
如果版本改變比較大, 可以用如下方法批量地重新安裝原有的軟件包。 首先,在更新R軟件前,在原來的R中運行:
packages <- .packages(TRUE) dump("packages", file="packages-20180704.R") #將R包名稱備份下來
這樣可以獲得要安裝的軟件包的列表。 在更新R軟件后, 運行如下程序:
options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/")) source("packages-20180704.R") #放在你的電腦文檔目錄下 install.packages(packages)
安裝時如果提問是否安裝需要編譯的源代碼包, 最好選擇否, 因為安裝源代碼包速度很慢還有可能失敗。
1.3.5 項目私有擴展包目錄
在使用了R一段較長時間以后, 會安裝了許多擴展包, 這些擴展包在某個時期是有用的, 但是一旦某個任務完成了就不再有用。 但是, 用戶自己無法判斷哪些包已經不需要。
R的renv擴展包支持每個項目保存私有的擴展包目錄, 這樣, 不同的項目使用不同的擴展包集合, 不至於引發版本沖突, 也不必總是為公用的R擴展包目錄增加許多僅是短暫使用的擴展包。 那些不需要安裝許多擴展包的項目仍可以不啟用renv, 使用公用的R擴展包目錄。
在生成新的RStudio項目時, 可以點擊選中“Use renv with this project”復選框; 對已有的RStdio項目, 如果要啟用renv, 可以選菜單“Tools – Project Options – Environment”, 選中“Use renv with this project”復選框。
啟用了renv的項目, 在安裝新的擴展包時, 將安裝在項目目錄中, 而不再修改R的公用的擴展包目錄。 這也有助於將項目遷移到其它計算機上。