Como posso carregar um monte de pacotes de uma só vez sem digitar novamente o comando require repetidamente? Eu tentei três abordagens, todas com falhas e queimaduras.
Basicamente, quero fornecer um vetor de nomes de pacotes para uma função que os carregue.
x<-c("plyr", "psych", "tm")
require(x)
lapply(x, require)
do.call("require", x)
x
?lapply
truque nativo aolibrary()
. Seja ótimo poder dizer:library(c("plyr", "umx"))
O pacote CRAN pacman que eu mantenho (criado com Dason Kurkiewicz) pode fazer isso:
Então o usuário pode fazer:
e se o pacote estiver ausente,
p_load
faça o download do CRAN ou do Bioconductor.fonte
p_load
? Um nome mais descritivo, comoload_packages
torna mais clara a intenção da função.p_
. Além disso, tendemos a usar um pouco a biblioteca e isso significa mais 7 caracteres. 7 caracteres x ~ 1000000 de tempo de vida útil da função x 0,5 segundos por caractere = 3500000 segundos. Isso é 58333.33 minutos, 972.2222 horas ou 40.50926 dias de vida de um programador que demos de volta para eles :-) De qualquer forma o nosso objetivo é empurrar para CRAN por 01 de fevereirop_
prefixo bastante duvidosa. Se o problema for a dispersão, remova op_
prefixo completamente. De fato, ter esses prefixos geralmente é desencorajado em outros idiomas por boas razões (eu disse a Hadley o mesmo com relação aofct_
absurdo dele em forcats). Isso é especialmente verdade, pois o uso pretendido do pacote é com um espaço para nome qualificado (pacman::
).Isso deve fazer o truque:
(O ponto principal é que o
args
argumento emdo.call(what, args)
deve ser uma lista - mesmo que tenha apenas um único elemento!)fonte
Para alguém que deseja instalar e carregar pacotes simultaneamente, deparei-me com essa função a partir deste link
fonte
Uma opção alternativa vem do pacote
easypackages
. Uma vez instalado, você pode carregar pacotes da maneira mais intuitiva:O pacote também inclui uma função para instalar vários pacotes:
Referência aqui .
fonte
library
função, refere-se ao local onde os pacotes estão instalados: a biblioteca de pacotes . Carregar vários pacotes vialibraries
não faz sentido. Ter uma função separadapackages
que faz outra coisa só piora as coisas. Eu sei que nomear é um problema difícil na engenharia de software, mas realmente. Esses nomes são particularmente ruins.libraries
não faça sentido. É o plural delibrary
elibrary
carrega um único pacote;libraries
carrega uma pluralidade de pacotes. Se você pensalibrary
em "carregar da sua única biblioteca" e estende-o paralibraries
"carregar de várias bibliotecas", talvez seja pouco intuitivo, mas essa não é a intenção; Eu ficaria muito feliz com o nomelibraries
.Você pode simplesmente usar o pacote lubripack e instala novos pacotes ordenadamente e, em seguida, carrega todos eles em uma linha.
Aqui está a saída depois de executar o código acima no RStudio.
Como instalar o pacote:
Execute o código abaixo para baixar o pacote e instalá-lo no GitHub. Não é necessário ter uma conta GitHub.
fonte
Com base na solução de daroczig, se você não quiser especificar uma lista como entrada, poderá usar
... que é mais curto que
fonte
Eu uso a seguinte função:
Isso tenta carregar e, se falhar, é instalado e tente carregar novamente.
fonte
Eu acho que o código que o @daroczig forneceu pode ser melhorado, substituindo o
require
comlibrary
e envolvendo alapply
chamada dentro dainvisible()
função. Portanto, o código aprimorado terá a seguinte aparência:Este código foi aprimorado porque:
library()
geralmente é preferível aorequire()
carregamento de pacotes, porque o primeiro gera um erro se o pacote não estiver instalado, enquanto o último apenas fornece um aviso. Além disso,require()
chamalibrary()
, então por que não usarlibrary()
diretamente!O objeto de lista retornado e impresso pela
lapply()
chamada não é significativo nesse caso, portanto, faz sentido tornar a saída invisível. Digamos que você use o R Notebook para seu trabalho de análise, o uso dainvisible()
função suprimirá o conteúdo do objeto de lista e evitará a confusão no arquivo do notebook renderizado.fonte
Ligeira modificação da resposta de Tyler Rinker para adicionar um cheque para instalar e carregar o pacman:
Eu gosto da solução p_load porque evita citações!
fonte