Como selecionar um espelho CRAN em R

177

Estou tentando instalar um pacote através do prompt R, fazendo o seguinte:

install.packages('RMySQL')

Mas a saída é a seguinte:

--- Please select a CRAN mirror for use in this session ---

E nada mais! Não consigo encontrar uma solução para este problema muito básico. O que devo digitar para selecionar um espelho CRAN?

EDITAR:

SO: Mac-OS X 10.6.8 R Versão: 2.15.0

Jim Johnson
fonte
1
ele deve vir para cima com uma lista de números 1-100 coresponding para o espelho, experimente digitar 84 e aperte enter
pyCthon
1
também adicionar o sistema operacional que você está usando e qual versão do R
pyCthon
1
Uma janela deve aparecer com seleções ou uma lista de seleções deve aparecer no console. Você verificou uma janela separada com opções? Como você está executando o R?
sayhey69
@pyCthon Digitei 84, mas nada foi retornado.
Jim Johnson
@ sayhey69 Estou simplesmente rodando R chamando o prompt do meu terminal. Eu apenas digito r, e o intérprete aparece. Eu nunca tive janelas separadas aparecendo pedindo opções.
Jim Johnson

Respostas:

277

Você deve obter uma janela com uma lista de repositórios ou um menu de texto com algumas opções. Mas se isso não estiver aparecendo, você sempre pode especificar o espelho de onde baixar os pacotes usando o reposparâmetro Ao fazer isso, R não perguntará mais sobre o repositório. Exemplo:

install.packages('RMySQL', repos='http://cran.us.r-project.org')

Aqui você tem uma lista de espelhos para R.

betabandido
fonte
1
Para mim, veio o repos pop-up, cliquei em um espelho e nada aconteceu; Enquanto isso, isso funcionou bem. Solução programática> solução interativa, como sempre! Obrigado!
22816 MichaelChirico
E aqui estão alguns espelhos para escolher, para ser gentil com cran: cran.r-project.org/mirrors.html
hobs
Achei isso uma solução alternativa útil para instalar um pacote recente no MRO. Passei um dia tentando instalar uma compilação recente de um pacote, mas a checkpointfunção não funcionou como descrito usando a distribuição do R da Anaconda, v3.4.3, com o instantâneo definido como 01/09/2017.
Steven C. Howell
93

Aqui está o que eu faço, que é basicamente direto da example(Startup)página:

## Default repo
local({r <- getOption("repos")
       r["CRAN"] <- "http://cran.r-project.org" 
       options(repos=r)
})

que está em ~/.Rprofile.

Edit: Como agora é 2018, podemos acrescentar que, nos últimos anos, o URL "https://cloud.r-project.org"tem sido preferível, pois reflete a) acesso https eb) uma CDN "sempre perto de você".

Dirk Eddelbuettel
fonte
3
Eu acho que essa deve ser a resposta aceita. Ele simplesmente funciona (tm), em todos os casos, inclusive em sistemas sem cabeça (servidores, IoT, etc.). Obrigado Dirk.
Jesse Adelman
4
E, em retrospectiva de vários anos depois, agora temos uma CDN adequada que garante a proximidade da rede com todos, e usamos httpsagora para torná-la https://cloud.r-project.orga URL.
Dirk Eddelbuettel 7/10
Espero que você não se importe, Dirk, mas acabei de editar sua postagem para refletir sua sugestão.
Jesse Adelman
Se eu quisesse, poderia fazê-lo há quatro horas atrás. Prefiro deixar o registro histórico falar. Mas como vândalos virão, eu coloco um postscriptum.
Dirk Eddelbuettel 8/08
61

Sou fã de:

chooseCRANmirror()

O que imprimirá a lista de espelhos na saída (não se preocupe com uma janela pop-up desde que você a esteja executando no terminal) e, em seguida, insira o número desejado.

Jared
fonte
1
Opa, faça chooseCRANmirror(81)e ele exibe um prompt para você digitar um número. Tudo no console.
Jared
1
Nota: isso não parece atualizar /etc/R/Rprofile.site ou ~ / .Rprofile. (Então, não é bom para escolher um espelho alternativa de idade que desapareceu melhor editar os arquivos acima diretamente..)
Darren Cozinhe
@ DarrenCook Você pode estar certo, mas acho que muitas pessoas podem se intimidar com esses arquivos. Eu sei que estava.
Jared
4
chooseCRANmirror(ind=81)é o que Jared provavelmente quis dizer. Irá ignorar o prompt.
Casey Watson
1
Pode definir options(menu.graphics = FALSE)em .Rprofilemuito
Andy Barbour
27

Eu uso a solução ~ / .Rprofile sugerida por Dirk, mas eu só queria ressaltar que

chooseCRANmirror(graphics=FALSE)

parece ser a coisa mais sensata a fazer em vez de

chooseCRANmirror(81)

, que pode funcionar, mas que envolve o número mágico 81 (ou talvez seja uma maneira sutil de promover o turismo na 81 = UK (Bristol) :-))

vijucat
fonte
13

A tela de seleção de repositório não pode ser mostrada no seu sistema (OS X), pois o OS X não inclui mais o X11. R tenta mostrar o prompt através do X11. Instale o X11 em http://xquartz.macosforge.org/landing/ . Em seguida, execute o comando de instalação. O prompt de seleção de repo será mostrado.

Cahit Gungor
fonte
1
Essa deve ser a resposta aceita. O artigo de suporte da Apple sobre o suporte X11 no OS X está em support.apple.com/kb/HT5293?viewlocale=en_US&locale=en_US
Jere Käpyaho
O problema é provável que a janela não apareça por causa do X11, mas sem dúvida, chooseCRANmirror()/ reposparameter são soluções muito mais simples.
Ben Mosher
4

Se você precisar configurar o espelho de uma maneira não interativa (por exemplo, instalando o rbundler em um script de implantação), poderá fazê-lo desta maneira:

Primeiro, execute manualmente:

chooseCRANmirror()

Escolha o número do espelho melhor para você e lembre-se dele. Em seguida, para automatizar a seleção:

R -e 'chooseCRANmirror(graphics=FALSE, ind=87);library(rbundler);bundle()'

Onde 87 é o número do espelho que você gostaria de usar. Esse snippet também instala o rbundle para você. Você pode omitir isso se quiser.

Kyle
fonte
4

eu usei

chooseCRANmirror(81)

fornece uma solicitação para selecionar o país. Em seguida, você pode fazer uma seleção digitando o código de espelho do país especificado lá.

user3470929
fonte
2

Um menu suspenso deve aparecer para você selecionar (ou você terá vários números para escolher), esteja usando R no terminal ou um IDE como o RStudio. Isso é suportado no Windows, Mac OS e na maioria dos sistemas Linux. No entanto, pode exigir configurações ou dependências adicionais, como o X-windows.

Para ativar o X-windows ao usar o acesso remoto, use os seguintes -XYsinalizadores:

ssh -XY username@server.domain

Geralmente, existe um repositório padrão, mas isso pode ser especificado se houver algum problema, como a execução de scripts ou o Rmarkdown / knitr. Você pode usar o repoopset espelho ou repositório para CRAN sempre que instalar com:

install.packages("package", repo="<your.nearest.mirror>")

É aconselhável usar o espelho mais próximo da sua localização para downloads mais rápidos. Por exemplo:

install.packages("RMySQL", repos="https://cran.stat.auckland.ac.nz/")

Você também pode definir a reposopção na sua sessão, para que você precise apenas uma vez por sessão interativa (ou script). Você pode verificar se reposestá configurado com:

options(repos)

Se você receber "Error in options(repos) : object 'repos' not found", poderá definir a opção de repositório. Por exemplo:

options(repos = "https://cran.stat.auckland.ac.nz/")

Então deve funcionar para instalar pacotes como de costume. Por exemplo:

install.packages("RMySQL")

Conforme mencionado por outros, você pode configurar o repositório no seu .Rprofilearquivo e ter esse trabalho em todos os seus scripts. Depende de você se você prefere essas opções "globais" em seu sistema ou opções "locais" em sua sessão ou script. Essas opções "locais" levam mais tempo para usar cada sessão, mas têm o benefício de tornar outras pessoas capazes de usar seus scripts, se elas não tiverem o seu .Rprofile.

Tom Kelly
fonte
0

Eu tinha, no macOS, exatamente o que você diz: um prompt 'selecione' e depois nada mais.

Depois que abri (e atualizei; não sei se isso era relevante) X-Quartz e, em seguida, reiniciei o R e tentei novamente, recebi uma lista de espelhos na janela X para escolher depois de alguns segundos. Foi mais rápido na terceira vez.

Chris F Carroll
fonte
0

Você também pode desativar todos os menus gráficos executando este ou colocando-o no seu Rprofile

options(menu.graphics = FALSE)
Extrapolador
fonte
0

Adicionar em ~/.Rprofile

local({r <- getOption("repos")
    r["CRAN"] <- "mirror_site"  #for example, https://mirrors.ustc.edu.cn/CRAN/
    options(repos=r)
    options(BioC_mirror="bioc_mirror_site") #if using biocLite
})
user6047846
fonte