Onde o R armazena pacotes?


207

A install.packages()função em R é o utilitário de descompactação automática que obtém e instala pacotes em R.

  1. Como descubro qual diretório o R escolheu para armazenar pacotes?

  2. Como posso alterar o diretório em que o R armazena e acessa pacotes?

Respostas:


249

O comando install.packages examina a variável .libPaths. Aqui está o que o meu padrão é no OSX:

> .libPaths()
[1] "/Library/Frameworks/R.framework/Resources/library"

Por padrão, não instalo pacotes lá, prefiro instalá-los no meu diretório pessoal. No meu .Rprofile, tenho esta linha:

.libPaths( "/Users/tex/lib/R" )

Isso adiciona o diretório "/ Users / tex / lib / R" à frente da variável .libPaths.


é isso que eu gostaria de fazer, mas como faço para acessar e .Rprofile? A linha não o reconhece como um objecto ou uma função
Milktrader

7
É um arquivo . Novamente, leia o manual e / ou ajuda (Inicialização).
precisa saber é o seguinte

44

Isso está documentado no manual 'Instalação e administração de R' que acompanha a instalação.

Na minha caixa Linux:

R> .libPaths()
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"      
[3] "/usr/lib/R/library"           
R> 

significando que o caminho padrão é o primeiro deles. Você pode substituir isso por meio de um argumento para ambos install.packages()(de dentro de R) ou R CMD INSTALL(fora de R).

Você também pode substituir definindo a variável R_LIBS_USER.


Eu tenho uma máquina com Windows Vista, mas assumindo o mesmo procedimento, você especifica o diretório na lista de argumentos install.packages () junto com o nome do pacote?
Milktrader

3
Você já descobriu 'help (install.packages)'? Além disso, consulte 'help (Startup)' conforme meu último comentário. E leia esses manuais. Por fim, em * nap, tendem a definir R_LIBS = "C: / opt / R / library" em um arquivo .Renviron. Sei que você também vai perguntar sobre isso - leia a ajuda (Inicialização). OK? ;-)
Dirk Eddelbuettel

1
Eu tenho uma dúzia de manuais R no meu Kindle (incluindo a mais de 3.000 páginas) e não estava ciente do arquivo de ajuda da Inicialização. Estive lendo os manuais e cheguei a um beco sem saída. Vá descobrir que era uma resposta simples o tempo todo. Perco pontos por questões RTFM <- Não tenho muitos a perder. Mais uma vez obrigado Dirk. Vejo você no R / Finance na próxima semana. Aprimorando as habilidades de R da melhor maneira possível, para não ser espanado durante as apresentações.
Milktrader

1
A página 3000+ é um agrupamento de toda a página de ajuda - menos útil. O item acima 'Instalação e administração' deve ser muito útil para o que você procura aqui.
precisa saber é o seguinte

existe uma maneira equivalente de encontrá-los na linha de comando do bash? ou seja, uma variável de ambiente que especifica onde as bibliotecas R estão instaladas se $R_LIBSe $R_LIBS_USERnão estão definidas? (Eu quero poder executar um script R no inst/diretório de um pacote instalado) em qualquer sistema Unix.
David LeBauer

12

Obrigado pela orientação dos dois respondentes acima. A sugestão de James Thompson funcionou melhor para usuários do Windows.

  1. Vá para onde o seu programa R está instalado. Isso é referido R_Homena literatura. Depois de encontrá-lo, vá para o subdiretório / etc.

    C:\R\R-2.10.1\etc
  2. Selecione o arquivo nesta pasta chamada Rprofile.site. Eu abro com o VIM. Você encontrará que este é um arquivo básico com menos de 20 linhas de código. Eu inseri o seguinte dentro do código:

    # my custom library path
    .libPaths("C:/R/library")

    (O comentário foi adicionado para acompanhar o que fiz no arquivo.)

  3. Em R, digitar a .libPaths()função gera o primeiro alvo emC:/R/Library

NOTA: provavelmente há mais de uma maneira de conseguir isso, mas outros métodos que tentei não funcionaram por algum motivo.


1
Eu copio colado a referida linha .libPaths=("C:/R/library")Copio para o meu arquivo Rprofile.site . Eu lançamento R 2.13.1 64 bits e obter este erro: Erro: não pode alterar o valor de bloqueado vinculativo para' .libPaths' Estou usando o Windows 7.
Fred

1
Veja a resposta de Dave : deve ser .libPaths("...")(uma ligação e não uma tarefa).
CodeFox 29/10/19

0

Você não quer o '='

Use .libPaths("C:/R/library")em seu Rprofilearquivo .site

E verifique se você tem o símbolo "correto (Shift-2)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.