Instalando todos os pacotes de cran que ainda não estão instalados?

StackOverflow https://stackoverflow.com/questions/2169118

  •  24-09-2019
  •  | 
  •  

Pergunta

Os seguintes comandos R instalarão todos os pacotes CRAN:

availablePackages <- available.packages()[,1]
install.packages(availablePackages)

E o comando a seguir listará todos os pacotes instalados:

installedPackages <- .packages(all.available = TRUE)

Minha pergunta é: Como faço para instruir R a instalar todos os pacotes de cran que ainda não estão instalados?

Foi útil?

Solução

Francamente, acho que é um trabalho meticuloso ... duraria dias, até semanas (dependendo dos recursos), mas aqui está o código (eu gosto de fazer coisas triviais):

# get names of installed packages
packs <- installed.packages()
exc <- names(packs[,'Package'])

# get available package names
av <- names(available.packages()[,1])

# create loooong string
ins <- av[!av %in% exc]
install.packages(ins)

Ainda não entendi por que você está fazendo isso, mas, ei ... algumas coisas simplesmente não devem ser ... o que mais me deixa me faz o fato de você já ter respondido sua própria pergunta! Você conseguiu o que precisava, e cabe a você montar as coisas ... estamos perdendo o ponto? Você tinha algo mais em mente?!?

Outras dicas

1) Por que você gostaria de fazer isso? Há mais de 3500 (em fevereiro de 2012) deles?

2) Você olhou para Visualizações de tarefas do cran e a CTV Pacote que permite instalar pacotes de uma determinada tarefa?

3) Sua pergunta ousada é uma consulta de indexação simples que você pode fazer manualmente (e além disso, também veja help(sets))

R> available <- LETTERS                  # a simple set
R> installed <- LETTERS[c(1:10, 15:26)]  # a simple subset
R> available[ ! available %in% installed ]
[1] "K" "L" "M" "N"
R> 

Editar: Em resposta ao seu acompanhamento:

a) Se um pacote não passar 'r cmd check' no Linux e Windows, ele não será carregado para Cran. Então esse trabalho é feito.

b) Obter tudo depende do seu fim também é o trabalho, como você verá. Fizemos isso para Cran2deb, que está em http://debian.cran.r-project.org (que faz edifícios de pacotes Debian completos, que são mais do que apenas instalar). Obtemos cerca de 2050 dos 2150 pacotes construídos. Existem alguns que nos recusamos a construir por causa da licença, alguns que não podemos por causa de cabeçalhos ou LIBs ausentes e alguns que não podemos construir porque precisam, por exemplo, pacotes de biocondutores.

Digite este comando e, em seguida, todos os pacotes serão instalados automaticamente:

install.packages(available.packages()[,1])

Eu testei isso e funciona

availablePackages=available.packages()
availablePackages<-as.vector(availablePackages[,1])
installedPackages=.packages(all.available = TRUE)
missedPackages<-setdiff(availablePackages, installedPackages)
for (i in 1:length(missedPackages))
{
pkgName <- missedPackages[i]
install.packages(pkgName)
}
print("END")

Cumprimentos

Melhor se você usar:

    check.and.install.Package<-function(package_name){
        if(!package_name%in%installed.packages()){
           install.packages(package_name)
        }
     }

Ligue para a função e verifique se o pacote necessário estiver instalado:

    check.and.install.Package("pkgName")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top