web-dev-qa-db-fra.com

Erreur de package lors de l'exécution du code r sur la ligne de commande

J'ai du code que j'exécute qui comprend cette partie:

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

Quand je l'exécute dans rstudio, tout fonctionne sans problème et il n'y a pas de bugs. Cependant, lorsque j'essaie d'exécuter mon code sur la ligne de commande, j'obtiens cette erreur:

$ Rscript.exe file.R
Loading required package: yaml
Installing package(s) into ‘/usr/lib/R/site-library’
(as ‘lib’ is unspecified)
Error in contrib.url(repos, type) :
  trying to use CRAN without setting a mirror
Calls: install.packages -> grep -> contrib.url
In addition: Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘yaml’
Execution halted
35
kng

RStudio définit un référentiel par défaut lorsque vous appelez install.packages depuis RStudio. Lorsque vous exécutez le script via la ligne de commande, vous devez indiquer à R quel référentiel utiliser (ou définir un référentiel global par défaut).

Vous pouvez facilement résoudre ce problème en disant à R d'utiliser votre référentiel préféré.

Par exemple, si vous souhaitez utiliser le référentiel de packages de RStudio, définissez repos="http://cran.rstudio.com/" à l'intérieur de install.packages appel.

if (!require("yaml")) {
  install.packages("yaml", repos="http://cran.rstudio.com/") 
  library("yaml")
}

Cela devrait fonctionner!

53
ialm