Instalando a versão mais antiga do pacote R


134

Estou tentando usar o Rpy2 e o ggplot2, mas recebo um erro. Depois de pesquisar o erro online, descobri que o erro ocorre porque há alterações no pacote ggplot2 que ainda não estão refletidas no Rpy2 (por exemplo, consulte esta publicação (Editar: o link está morto)).

Então agora eu preciso instalar uma versão mais antiga do ggplot2. Aqui está o pseudo-código para o que eu quero:

install.packages("ggplot2", version='0.9.1')

Mas install.packagesnão tem versionargumento . Como eu faço isso?


Respostas:


150

Para instalar uma versão mais antiga de um pacote da fonte (no R):

packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

Se isso não funcionar para você e você estiver no Windows, provavelmente o motivo é a falta de uma cadeia de ferramentas apropriada para a criação / compilação de pacotes . Normalmente você instalaria um binário pré-compilado do CRAN, mas eles apenas arquivam fontes de pacotes , não binários. [1] Isso significa que você precisa instalar o Rtools para poder compilar tudo localmente. (Nota: Rtools não é um pacote R. )

A resposta do @ shadow abaixo também mostra o caso que você pode usar devtools::install_version(). Essa também é uma boa ideia, mas também está sujeita à necessidade de Rtools no Windows.

Em 18 de setembro de 2015, uma nova versão do pacote apareceu no CRAN . Isso depende do servidor Revolution Analytics MRAN para instalar pacotes para versões ou datas específicas:

# install yesterday's version of checkpoint, by date
install.dates('checkpoint', Sys.Date() - 1)

# install earlier versions of checkpoint and devtools
install.versions(c('checkpoint', 'devtools'), c('0.3.3', '1.6.1'))

Isso tem a vantagem de não exigir que o Rtools instale pacotes binários no Windows, mas só funciona desde 17/09/2014 (quando o MRAN foi lançado).

Para instalar uma versão mais antiga da linha de comando (fora do R):

Você também pode instalar um pacote usando R CMD INSTALLna linha de comando (Terminal, Prompt de Comando, etc.) depois de ter a fonte do pacote ("tarball") localmente em sua máquina, por exemplo, usando wget(se houver):

wget http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz

ou, se você estiver no Windows, um equivalente usando o PowerShell seria:

(new-object System.Net.WebClient).DownloadFile("http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz", "./ggplot2_0.9.1.tar.gz")

ou você pode simplesmente baixar a fonte do arquivo CRAN através do seu navegador da web.

Para instalar a partir do arquivo local, você pode simplesmente:

R CMD INSTALL ggplot2_0.9.1.tar.gz

Isso deve funcionar em qualquer plataforma (com a mesma ressalva - como acima - sobre a necessidade de uma cadeia de ferramentas para a construção de pacotes).


[1] Isso não é mais totalmente verdade. A partir de março de 2016, o CRAN começou a hospedar um servidor "CRAN Archive" que contém binários Windows e Mac para versões muito antigas do R (> 5 anos). Agora você pode instalar diretamente deste servidor usando install.packages(). Consulte a nova R FAQ 7.44 para obter mais detalhes.


4
Obrigado, acho que é o caminho correto. Pena que agora eu recebo: Warning message: package ‘http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz’ is not available (for R version 2.15.2)
hirolau

3
Teve um problema semelhante com o Rcpp. Isso pode dever-se à dependência da versão R do pacote (DEPENDS: <versão>), ou pode ser que a sessão do R em execução não permita executar a atualização. O que eu achei funcionou para mim foi realizar a atualização da maneira que Mark Butler (abaixo) sugeriu (R CMD INSTALL your_version.tar.gz). Isso foi para R 2.15.3 no meu caso.
Robert Casey

@Antoine Você está no Windows? E, em caso afirmativo, você tem o Rtools instalado?
Thomas

@ Thomas Obrigado por responder. Sim, estou no Windows com o Rtools "pseudo-instalado", veja este tópico .
Antoine

@Thomas Vou tentar executar o meu script no Amazon EC2 para evitar os problemas óbvios locais na minha máquina (caminhos de biblioteca, versões de R vs versões dos pacotes, compilação questões etc.)
Antoine

87

O remotespacote oferece uma install_versionfunção que pode fazer isso diretamente.

require(remotes)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")

Anteriormente, essa resposta apontava para o devtoolspacote, que também reexporta a install_versionfunção. Obrigado @MichaelChirico por apontar que o remotespacote é preferível.


você pode manter várias versões do mesmo pacote sem precisar install_versionsempre que desejar carregar uma versão específica? digamos:library(ggplot2-0.9.1)
PatrickT

1
@PatrickT Você pode fazer isso usando uma biblioteca local. Por exemplo install_version('ggplot2', version = 0.9.1, lib = 'path_to_library_with_ggplot_0.9.1')elibrary(ggplot2, lib.loc = 'path_to_library_with_ggplot_0.9.1')
shadow

1
você também pode usar .libPaths ( "/ dir_for_custom_library_versions") antes de executar install_version
tjjjohnson

1
Hoje em dia eu acho que remotes::install_versioné preferível, pois remotesé um pacote muito mais leve do que devtools( devtools::install_versioné apenas uma reexportação de remotes::install_version)
MichaelChirico

5

Usar install.packagescomo descrito em outra resposta não funciona para mim.

A melhor alternativa que encontrei é usar a função install_urldo pacote devtools.

Outra possibilidade que eu não explorei mais:

  1. Faça o download do arquivo de origem .tar.gz mais antigo nos arquivos do pacote.
  2. Siga as etapas documentadas em http://rtm.wustl.edu/writings/htrtargz.pdf para instalá-lo localmente.

Isso não funciona para mim, siga minha pergunta stackoverflow.com/q/22673474/684229 para obter detalhes.
TMS

+1, o R CMD INSTALLcomando também funciona no Ubuntu. Obrigado!!
Phani

5

Você pode fazer o download da versão apropriada no link abaixo como um arquivo zip.

http://cran.r-project.org/src/contrib/Archive/ggplot2/

No R Studio: Ferramentas >> Instalar pacotes >> Instalar de: (selecione o menu suspenso)

Arquivo de archive de pacote (.zip, .tar.gz).

Escolha seu arquivo zip do pacote recém-baixado e instale o pacote


4

Encontrei uma boa solução, que funcionou para mim (os detalhes estão no link ).

Comando na biblioteca "repmis":

# Install old versions of the e1071 and gtools packages.

# Create vectors of the package names and versions to install
# Note the names and version numbers must be in the same order
Names <- c("e1071", "gtools")
Vers <- c("1.6", "2.6.1")

# Install old package versions into the default library
InstallOldPackages(pkgs = Names, versions = Vers)

1

install.packagesMétodo puro

Veja este tópico na lista de discussão r-devel . Em resposta a Kurt Wheeler, Kurt Hornik revela um recurso não documentado do site do CRAN para especificar a versão específica de um pacote.

Este método funcionará desde que todas as dependências necessárias já estejam instaladas:

package = "https://cran.r-project.org/package=svglite&version=1.2.1"
utils::install.packages(pkgs = package, repos = NULL)

Observe a estrutura do URL acima. Isso soluciona o problema de o CRAN ter uma estrutura de URL diferente para a versão mais recente e para as versões arquivadas:

# Latest version (not available at Archive/svglite)
https://cran.r-project.org/src/contrib/svglite_1.2.1.tar.gz
# Archived version
https://cran.r-project.org/src/contrib/Archive/svglite/svglite_1.2.0.tar.gz

remotes::install_version método

Outra opção é usar a remotes::install_version função . No entanto, você precisará instalar o remotes pacote .


0

Há um versionspacote que simplifica essa tarefa consideravelmente, para versões do pacote lançadas desde 17/09/2014. Ele usa instantâneos do servidor MRAN no Revolution Analytics para:

  • mostrar datas de lançamento e disponibilidade de MRAN de qualquer pacote CRAN ( available.versions),

  • instalar versões especificadas de um ou mais pacotes ( install.versions) ou

  • instale as versões do pacote disponíveis a partir de qualquer data especificada ( install.dates). Ele faz a instalação a partir do servidor MRAN por meio da install.packagesfunção padrão ; portanto, as versões binárias disponíveis podem ser instaladas em vez de serem compiladas a partir da fonte, e as dependências do pacote na data especificada podem ser incluídas.

É claro que pode haver problemas de compatibilidade com combinações de versões de pacotes e versões R. Para executar diferentes versões R, consulte, por exemplo, esta página .

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.