Estou elaborando alguns tutoriais em R. Cada código R está contido em uma pasta específica. Existem arquivos de dados e outros arquivos lá. Desejo abrir o .r
arquivo e fonte-lo de forma que não precise alterar o diretório ativo no Rstudio, como mostrado abaixo:
Existe uma maneira de especificar meu diretório de trabalho automaticamente em R.
r
automation
working-directory
Stat-R
fonte
fonte
?setwd
?getwd
load
.rdata-files na mesma pasta, nãosource
com o diretório de trabalho definido como o caminho do arquivo de origem.Respostas:
Para obter a localização de um script que está sendo originado, você pode usar
utils::getSrcDirectory
ouutils::getSrcFilename
. Portanto, alterar o diretório de trabalho para o do arquivo atual pode ser feito com:Isso não funciona no RStudio se você executar o código em vez de fornecê -lo. Para isso, você precisa usar
rstudioapi::getActiveDocumentContext
.Essa segunda solução exige que você esteja usando o RStudio como seu IDE, é claro.
fonte
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
getActiveDocumentContext()
no console no RStudio, o caminho é relatado como''
. No entanto, se você executar a linha de código na parte do editor, ela será executada conforme o esperado. Isso pode abordar o comentário de @Andrurstudioapi
pacote. Tente atualizar para o mais recente.Eu sei que essa pergunta está desatualizada, mas eu estava procurando uma solução para isso também e o Google lista isso no topo:
coloque isso em algum lugar do arquivo (o melhor seria o começo), para que o wd seja alterado de acordo com esse arquivo.
Segundo os comentários, isso pode não funcionar necessariamente em todas as plataformas (o Windows parece funcionar, Linux / Mac para alguns). Lembre-se de que esta solução é para 'fornecer' os arquivos, não necessariamente para executar blocos nesse arquivo.
veja também get filename e caminho do arquivo `source`d
fonte
Error in dirname(parent.frame(2)$ofile) : a character vector argument expected
funciona para mim, mas se você não quiser usar o rstudioapi e não estiver em um projeto, poderá usar o símbolo ~ em seu caminho. O símbolo ~ refere-se ao diretório de trabalho padrão do RStudio (pelo menos no Windows).
Se o diretório de trabalho do RStudio for "D: / Documents",
setwd("~/proyect1")
é o mesmo que setwd ("D: / Documents / proyect1").Depois de definir isso, você pode navegar para um subdiretório:
read.csv("DATA/mydata.csv")
. É o mesmo queread.csv("D:/Documents/proyect1/DATA/mydata.csv")
.Se você deseja navegar para uma pasta pai, pode usar
"../"
. Por exemplo:read.csv("../olddata/DATA/mydata.csv")
que é o mesmo queread.csv("D:/Documents/oldata/DATA/mydata.csv")
Essa é a melhor maneira de codificar scripts, independentemente do computador que você está usando.
fonte
Esta resposta pode ajudar:
Encontrei-o em: https://support.rstudio.com/hc/communities/public/questions/200895567-can-user-obtain-the-path-of-current-Project-s-directory-
A resposta do BumbleBee (com parent.frame em vez de sys.frame) não funcionou para mim, eu sempre recebo um erro.
fonte
Para o rstudio , você pode definir automaticamente seu diretório de trabalho para o diretório de scripts usando o rstudioapi assim:
Isso funciona ao executar ou originar seu arquivo.
Você precisa instalar o pacote rstudioapi primeiro. Observe que imprimo o caminho para ter 100% de certeza de que estou no lugar certo, mas isso é opcional.
fonte
A solução
não está trabalhando para mim.
Estou usando um algoritmo de força bruta, mas funciona:
Mais fácil ao pesquisar em um diretório:
fonte
Se você trabalha no Linux, pode tentar o seguinte:
setwd(system("pwd", intern = T) )
Funciona para mim.
fonte
pwd
também funciona no PowerShell (atualmente considerado o shell padrão no Windows), onde é um alias paraGet-Location
.Eu estava apenas procurando uma solução para este problema, chegou a esta página. Eu sei que é datado, mas as soluções anteriores eram insatisfatórias ou não funcionavam para mim. Aqui está o meu trabalho, se estiver interessado.
fonte
setwd( dirname(filepath) )
?Percebo que esse é um encadeamento antigo, mas tive um problema semelhante ao precisar definir o diretório de trabalho e não consegui fazer com que nenhuma das soluções funcionasse para mim. Aqui está o que funcionou, caso mais alguém se depare com isso mais tarde:
É um pouco complicado, mas basicamente isso usa comandos do sistema para obter o diretório de trabalho e salvá-lo em dummyfile.txt, então R lê esse arquivo usando data.table :: fread. O resto é apenas limpar o que foi impresso no arquivo, para que eu fique apenas com o caminho do diretório.
Eu precisava executar o R em um cluster, para que não houvesse maneira de saber em qual diretório eu terminaria (os trabalhos recebem um número e um nó de computação). Isso fez o truque para mim.
fonte
Eu entendo que isso está desatualizado, mas não consegui que as respostas anteriores funcionassem satisfatoriamente, por isso, quis contribuir com meu método caso alguém encontrasse o mesmo erro mencionado nos comentários à resposta do BumbleBee.
O meu é baseado em um simples comando do sistema. Tudo o que você alimenta com a função é o nome do seu script:
A saída da função seria semelhante
"/Users/you/Path/To/Script"
. Espero que isso ajude qualquer pessoa que possa ter ficado presa.fonte
O
here
pacote fornece ahere()
função, que retorna o diretório raiz do projeto com base em algumas heurísticas.Não é a solução perfeita, pois não encontra a localização do script, mas é suficiente para alguns propósitos, então pensei em colocá-lo aqui.
fonte
here::set_here()
na fonte.A maioria das GUIs pressupõe que, se você estiver em um diretório e "abrir", clique duas vezes ou tentar executar um arquivo .R, que o diretório em que reside será o diretório de trabalho, a menos que especificado de outra forma. A GUI do Mac fornece um método para alterar esse comportamento padrão, que pode ser alterado no painel Inicialização das Preferências que você define em uma sessão em execução e se torna efetivo na próxima "inicialização". Você também deve estar olhando para:
A documentação do RStudio diz:
"Quando iniciado por meio de uma associação de arquivos, o RStudio define automaticamente o diretório de trabalho como o diretório do arquivo aberto." A configuração padrão é que o RStudio seja registrado como manipulador de arquivos .R, embora também haja menção da capacidade de definir uma "associação" padrão com o RStudio para extensões .Rdata e .R. Se ter status de manipulador e de associação é o mesmo no Linux, não sei dizer.
http://www.rstudio.com/ide/docs/using/workspaces
fonte
também não funciona para mim, mas o seguinte (conforme sugerido em https://stackoverflow.com/a/35842176/992088 ) funciona para mim no ubuntu 14.04
fonte
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
também no Ubuntu 14.04Caso você use a codificação UTF-8:
Você precisa instalar o pacote rstudioapi se ainda não o fez.
fonte
Aqui está outra maneira de fazer isso:
fonte