亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

優雅的方法來檢查丟失的包并安裝它們?

優雅的方法來檢查丟失的包并安裝它們?

拉莫斯之舞 2019-08-06 13:29:15
優雅的方法來檢查丟失的包并安裝它們?這些天我似乎與共同作者分享了很多代碼。他們中的許多人都是初級/中級R用戶,并沒有意識到他們必須安裝他們尚未擁有的軟件包。是否有一種優雅的方式來調用installed.packages(),將其與我正在加載的那些進行比較并在安裝時如果丟失?
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

是。如果您有包列表,請將其與輸出進行比較installed.packages()[,"Package"]并安裝缺少的包。像這樣的東西:


list.of.packages <- c("ggplot2", "Rcpp")

new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]

if(length(new.packages)) install.packages(new.packages)

除此以外:


如果您將代碼放在一個包中并使它們成為依賴項,那么在安裝包時它們將自動安裝。


查看完整回答
反對 回復 2019-08-06
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

Dason K.和我有pacman包可以做得很好。p_load包中的功能就是這樣做的。第一行是為了確保安裝pacman。

if (!require("pacman")) install.packages("pacman")pacman::p_load(package1, package2, package_n)


查看完整回答
反對 回復 2019-08-06
?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

你可以使用以下的返回值require

if(!require(somepackage)){
    install.packages("somepackage")
    library(somepackage)}

library在安裝后使用,因為如果安裝不成功或由于某些其他原因無法加載包,它將拋出異常。您可以使其更加強大和可重用:

dynamic_require <- function(package){
  if(eval(parse(text=paste("require(",package,")")))) return True

  install.packages(package)
  return eval(parse(text=paste("require(",package,")")))}

這種方法的缺點是你必須在引號中傳遞包名,而不是真實的require


查看完整回答
反對 回復 2019-08-06
  • 3 回答
  • 0 關注
  • 636 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號