R包安裝函數(shù)"install.packages"函數(shù)詳解

今天解決解決了一個(gè)R包安裝的問題直撤,并且硬著頭皮把install.packagesdownload.file的說(shuō)明從頭到位看了一遍陌兑,應(yīng)該再也沒有一個(gè)R包安裝能為難到我了。

問題實(shí)例

問題描述

能夠用瀏覽器訪問鏡像站點(diǎn)绣溜,但是在安裝R包時(shí)遇到如下問題幕帆,

# CRAN
Warning in install.packages :
  unable to access index for repository https://mirrors.ustc.edu.cn/CRAN/src/contrib:
  cannot open URL 'https://mirrors.ustc.edu.cn/CRAN/src/contrib/PACKAGES'
Warning in install.packages :
  unable to access index for repository https://mirrors.ustc.edu.cn/CRAN/src/contrib:
  cannot open URL 'https://mirrors.ustc.edu.cn/CRAN/src/contrib/PACKAGES'
Warning in install.packages :
  package ‘ggtree’ is not available (for R version 3.5.1)
Warning in install.packages :
  unable to access index for repository https://mirrors.ustc.edu.cn/CRAN/bin/windows/contrib/3.5:
  cannot open URL 'https://mirrors.ustc.edu.cn/CRAN/bin/windows/contrib/3.5/PACKAGES'
# Bioconductor
Error: Bioconductor version cannot be validated; no internet connection?
In addition: Warning messages:
1: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘GSEABase’
2: In file(con, "r") : InternetOpenUrl failed: '??'
3: In file(con, "r") : InternetOpenUrl failed: 'on'

解決思路

第一步,確認(rèn)R能否真的能夠下載數(shù)據(jù)虑粥。檢索到R用download.file進(jìn)行文件下載如孝,

 download.file(url = "https://upload-images.jianshu.io/upload_images/2013053-6e5c996e3a0d4c93.png",
              destfile = "test.png")

發(fā)現(xiàn)無(wú)法直接下載內(nèi)容,證明R在連接網(wǎng)絡(luò)時(shí)出現(xiàn)了問題

trying URL 'https://upload-images.jianshu.io/upload_images/2013053-6e5c996e3a0d4c93.png'
Error in download.file(url = "https://upload-images.jianshu.io/upload_images/2013053-6e5c996e3a0d4c93.png",  : 
  cannot open URL 'https://upload-images.jianshu.io/upload_images/2013053-6e5c996e3a0d4c93.png'
In addition: Warning message:
In download.file(url = "https://upload-images.jianshu.io/upload_images/2013053-6e5c996e3a0d4c93.png",  :
  InternetOpenUrl failed: 

第二步娩贷,根據(jù)報(bào)錯(cuò)信息, "InternetOpenUrl failed"進(jìn)行檢索暑竟,找到一種解決思路,也就是指定R訪問網(wǎng)絡(luò)的方法為libcurl

download.file(url = "https://upload-images.jianshu.io/upload_images/2013053-6e5c996e3a0d4c93.png",
              destfile = "test.png", methods="libcurl")

能夠解決問題育勺。

深入學(xué)習(xí)install.packages()

為了讓自己能夠更好解決R包安裝問題但荤,需要深入學(xué)習(xí)install.packages的原理(BiocManager::install本質(zhì)上也是調(diào)用install.packages)。

先仔細(xì)閱讀install.packages()的參數(shù):

pkgs: 默認(rèn)是包名涧至,比如說(shuō)"Matrix", 會(huì)自動(dòng)從CRAN上檢索對(duì)應(yīng)的包腹躁,然后進(jìn)行下載。如果你希望指定安裝本地包南蓬,或者一個(gè)具體的網(wǎng)絡(luò)地址纺非,參考代碼如下:

# from url resource
install.packages("https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/contrib/3.5/Matrix_1.2-15.zip", repos=NULL)
# from local
install.packages("~/../Desktop/Matrix_1.2-15.zip", repos = NULL)
  • lib: R包放在那里,和.libPaths()有關(guān)

  • repos: 鏡像地址赘方,當(dāng)設(shè)置為NULL時(shí)烧颖,就可以安裝本地包,或一個(gè)URLs窄陡。

  • contriburl: 這個(gè)參數(shù)不常用炕淮,一般是你自己搞了一個(gè)本地鏡像點(diǎn)時(shí)使用,該參數(shù)會(huì)覆蓋掉reops. 與type="both"不兼容

  • method: R包下載的方法跳夭,默認(rèn)參數(shù)是default. 對(duì)于file://會(huì)調(diào)用internal涂圆,對(duì)于ftps://會(huì)調(diào)用libcurl,對(duì)于 http://,https://,ftp://, windows默認(rèn)使用wininet,對(duì)于Unix類系統(tǒng),默認(rèn)使用libcurl. 注意:如果Windows上用capabilities("libcurl")返回時(shí)TRUE, 那么也可以用libcurl, Unix類系統(tǒng)無(wú)法使用wininet.

  • available: 可以是avaiable.packages返回的鏡像點(diǎn)中可用R包币叹,也可以設(shè)置為NULL(這時(shí)函數(shù)內(nèi)部會(huì)自動(dòng)調(diào)用avaiable.packages). 與type="both"不兼容

  • destdir: 下載的R包存放位置润歉,NULL表示放在臨時(shí)文件夾中,在關(guān)閉R后會(huì)被刪除颈抚。

  • dependencies:默認(rèn)是NA踩衩,表示 c("Depends", "Imports", "LinkingTo"), TRUE表示對(duì)于要安裝的R包是c("Depends", "Imports", "LinkingTo", "Suggests")依賴,依賴的依賴是c("Depends", "Imports", "LinkingTo", "Suggests"). 注意: 對(duì)于二進(jìn)制包,都會(huì)忽略"LinkingTo"

  • type: 下載的是二進(jìn)制包("binary")還是源代碼"source". 如果設(shè)置為"binary", 依舊會(huì)先去檢查該軟件包最新的版本是否只有源代碼驱富,可用options(install.packages.check.source = "no")關(guān)閉反砌。當(dāng)設(shè)置為"source"時(shí),只有不含"C/C++/Fortran"代碼的R包可以被編譯萌朱,如果R包中有C/C++/Fortran代碼,那么Windows就需要安裝Rtools策菜。注意: 在Windows編譯R包時(shí)晶疼,有一小部分需要設(shè)置INSTALL_opts = "--force-biarch"INSTALL_opts = "--merge-multiarch", 建議后者。

  • configure.args: 該參數(shù)只在源代碼編譯時(shí)使用又憨,會(huì)傳入R CMD INSTALL

  • configure.vars: 該參數(shù)只在源代碼編譯時(shí)使用翠霍, 類似于configure.args, 效果是在運(yùn)行configure前設(shè)置環(huán)境變量。

  • clean: 在R CMD INSTALL中加入--clean參數(shù)蠢莺,用于清除臨時(shí)中間文件寒匙。

  • Ncpus: 編譯時(shí)用多少CPU,加快編譯速度躏将。

  • verbose: 是否輸出安裝時(shí)的信息锄弱。

  • libs_only: 是否只安裝64位或者32位的動(dòng)態(tài)鏈接庫(kù)

  • INSTALL_opts: 源代碼編譯時(shí)R CMD INSTALL的額外傳入?yún)?shù),例如c("--html", "--no-multiarch", "--no-test-load").

  • quiet: 安靜模式祸憋,降低輸出的信息量

  • keep_outputs: 是否在當(dāng)前工作目錄下保留源代碼編譯后的輸出文件会宪。

  • ...的額外的參數(shù)來(lái)自于download.file, 主要就是cache=TRUE表示服務(wù)端緩存。默認(rèn)是"TRUE"蚯窥,如果是http://https://更建議用cacheOK=FALSE`, 避免一些報(bào)錯(cuò)掸鹅。

關(guān)于Secure URLs

對(duì)于https://或者ftps://這類URL,R在下載數(shù)據(jù)時(shí)會(huì)嘗試對(duì)網(wǎng)站的證書進(jìn)行驗(yàn)證拦赠。通常會(huì)調(diào)用操作系統(tǒng)安裝的CA root certificates完成巍沙。

對(duì)于Windows系統(tǒng),method="libcurl"時(shí)可能會(huì)出現(xiàn)問題荷鼠,也就是Windows系統(tǒng)不提供有效的CA certificate bundle, 也就是說(shuō)默認(rèn)情況下句携,Windows的certificates是沒有被驗(yàn)證過的。也就是Sys.getenv("CURL_CA_BUNDLE")返回結(jié)果為空允乐,建議Sys.setenv(CURL_CA_BUNDLE=file.path(Sys.getenv("R_HOME"),"/etc/curl-ca-bundle.crt"))打開驗(yàn)證务甥。

可以從https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt下載curl-ca-bundle.crt的備份。

關(guān)于代理

wininet調(diào)用系統(tǒng)中的Internet Option處理代理(proxy). 或者用Sys.setenv設(shè)置環(huán)境變量http_proxy,ftp_proxy

互聯(lián)網(wǎng)選項(xiàng)Internet Options

解決報(bào)錯(cuò)的一些建議

還有 12% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
支付 ¥66.00 繼續(xù)閱讀
  • 序言:七十年代末喳篇,一起剝皮案震驚了整個(gè)濱河市敞临,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌麸澜,老刑警劉巖挺尿,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡编矾,警方通過查閱死者的電腦和手機(jī)熟史,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窄俏,“玉大人蹂匹,你說(shuō)我怎么就攤上這事“简冢” “怎么了限寞?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)仰坦。 經(jīng)常有香客問我履植,道長(zhǎng),這世上最難降的妖魔是什么悄晃? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任玫霎,我火速辦了婚禮,結(jié)果婚禮上妈橄,老公的妹妹穿的比我還像新娘庶近。我一直安慰自己,他們只是感情好眷蚓,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布拦盹。 她就那樣靜靜地躺著,像睡著了一般溪椎。 火紅的嫁衣襯著肌膚如雪普舆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天校读,我揣著相機(jī)與錄音沼侣,去河邊找鬼。 笑死歉秫,一個(gè)胖子當(dāng)著我的面吹牛蛾洛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雁芙,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼轧膘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了兔甘?” 一聲冷哼從身側(cè)響起谎碍,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洞焙,沒想到半個(gè)月后蟆淀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拯啦,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年熔任,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褒链。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疑苔,死狀恐怖甫匹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惦费,我是刑警寧澤兵迅,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站趁餐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏篮绰。R本人自食惡果不足惜后雷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吠各。 院中可真熱鬧臀突,春花似錦、人聲如沸贾漏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纵散。三九已至梳码,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伍掀,已是汗流浹背掰茶。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜜笤,地道東北人濒蒋。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像把兔,于是被迫代替她去往敵國(guó)和親沪伙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容