HOWTO · R

Como executar um script R a partir da linha de comandos

Aprenda a executar um script R num terminal ou numa linha de comandos com Rscript, a passar argumentos, a agendar uma tarefa cron e a controlar versões dos scripts com Git.

Nesta página

Para executar um script R num terminal ou na linha de comandos, guarde o código num ficheiro e invoque-o com Rscript path/to/script.R. É necessário ter o R instalado e a shell tem de conseguir encontrar Rscript através de PATH; caso contrário, use o caminho completo do executável. Este método é útil para análises repetíveis, scripts que recebem dados de entrada e tarefas agendadas.

O que é o Rscript?

Rscript é o programa de linha de comandos que permite executar código R a partir de um script ou de um comando fornecido diretamente. É adequado para tarefas não interativas: as instruções estão num ficheiro ou comando, e o processo termina quando o trabalho acaba. Numa sessão interativa de R, pelo contrário, pode introduzir comandos e consultar os resultados à medida que trabalha.

A instalação do R inclui o Rscript. Abra um terminal no macOS ou Linux, ou a Linha de Comandos ou o PowerShell no Windows, e verifique se o comando está disponível com Rscript --version. Se a shell indicar que não consegue encontrar o comando, instale o R ou localize o executável incluído na instalação do R e use o caminho completo. Os diretórios de instalação variam consoante o sistema operativo e a instalação; por isso, evite depender de um caminho específico de uma versão copiado de outro computador.

Executar um script R com Rscript

Crie um ficheiro chamado mean.R com este pequeno exemplo. Se forem fornecidos números na linha de comandos, o script utiliza-os; caso contrário, recorre a um conjunto predefinido. Assim, pode executá-lo como está ou adaptá-lo a outros valores.

args <- commandArgs(trailingOnly = TRUE)
numbers <- if (length(args) > 0) as.numeric(args) else c(1, 2, 3, 4, 5)
cat("Mean: ", mean(numbers), "\n", sep = "")

Com os valores predefinidos, o código utiliza os números de 1 a 5; pela análise do código, espera-se que apresente Mean: 3. A etiqueta Mean é apresentada em inglês e este exemplo não foi verificado em execução.

Execute-o a partir do diretório que contém o ficheiro com Rscript mean.R. Para o executar a partir de outro diretório, indique o caminho do script, por exemplo Rscript /path/to/mean.R. No Windows, coloque entre aspas um caminho que contenha espaços, como em Rscript "C:/Users/Ada/My Scripts/mean.R"; use o formato de caminho aceite pela shell que abriu. Se Rscript não estiver em PATH, substitua-o pelo caminho completo do executável e mantenha o caminho do script como argumento separado.

Para executar uma expressão curta sem guardar um ficheiro, use a opção -e numa shell semelhante a POSIX ou no PowerShell, por exemplo Rscript -e 'mean(iris$Sepal.Length)'. Esta forma com aspas simples não funciona na Linha de Comandos do Windows, que trata as aspas simples como caracteres literais; nesse caso, use o exemplo com o script guardado num ficheiro. O conjunto de dados iris está disponível numa instalação padrão do R. As opções --help e --version pedem, respetivamente, a ajuda do comando e informações sobre a versão; --verbose solicita informações mais detalhadas durante a execução. Estas opções podem ser úteis para confirmar os detalhes de invocação ou diagnosticar uma execução. -e começa com um único hífen, por isso nem todas as opções começam com dois.

Passar argumentos a um script R

Um script pode ler os valores que surgem depois do nome do ficheiro com commandArgs(trailingOnly = TRUE). O exemplo acima converte cada argumento fornecido num número e calcula a média. Por exemplo, Rscript mean.R 10 20 30 passa três valores separados. Se um dos valores de entrada contiver espaços, coloque-o entre aspas na shell para que seja recebido como um único argumento. Indique claramente o formato de entrada esperado pelo script e adapte a conversão e a validação quando os dados não forem numéricos.

Agendar scripts R com tarefas cron

Em sistemas do tipo Unix, o cron pode iniciar um script segundo um horário definido. Edite o crontab do seu utilizador com crontab -e e, em seguida, adicione uma entrada como 0 2 * * * /usr/bin/Rscript /path/to/report.R para pedir uma execução diária às 2:00, de acordo com a configuração cron da máquina. Os caminhos do executável e do script são exemplos; use os caminhos existentes no computador que irá executar a tarefa.

As tarefas agendadas podem começar com um diretório de trabalho e um ambiente diferentes dos da shell interativa. Use caminhos absolutos para o executável, o script e os ficheiros de entrada ou saída. Se precisar de diagnosticar execuções agendadas, configure também a recolha da saída ou dos erros da tarefa. O cron é uma opção de agendamento para sistemas do tipo Unix; no Windows, pode utilizar o Agendador de Tarefas do sistema.

Integrar R com Git para controlar versões

O Git pode registar alterações aos scripts R e a outros ficheiros do projeto, facilitando a revisão das edições ou a recuperação de uma versão anterior. É opcional: não precisa do Git para executar um script com Rscript. No diretório do projeto, inicialize um repositório com git init, adicione os ficheiros que pretende acompanhar com git add e registe uma versão com git commit. Reveja o que vai ser incluído na versão e evite adicionar dados gerados ou credenciais, a menos que devam fazer parte do histórico do projeto.

Conclusão

Guarde o código num ficheiro R e execute-o com Rscript, indicando o caminho do script. Confirme que o R está instalado e que a shell consegue aceder ao executável; coloque os caminhos entre aspas quando necessário e passe os valores de entrada depois do nome do ficheiro. Para tarefas recorrentes, use um agendador e caminhos adequados ao ambiente em que será executada cada tarefa. Se quiser acompanhar as alterações aos scripts, use o Git.

Perguntas frequentes

  1. Como instalo o R e o Rscript?
    Instale o R seguindo as instruções para o seu sistema operativo. O Rscript está incluído no R; neste fluxo de trabalho, não é necessário instalá-lo separadamente.

  2. Posso executar um script R no Windows?
    Sim. Use a Linha de Comandos ou o PowerShell e execute Rscript script.R se o executável estiver disponível em PATH. Caso contrário, invoque o executável instalado indicando o caminho completo. Coloque entre aspas os caminhos com espaços, de acordo com as regras de utilização de aspas da shell.

  3. Qual é a diferença entre Rscript e R?
    O Rscript destina-se a executar um script ou uma expressão a partir da linha de comandos. O comando R inicia normalmente uma sessão interativa, na qual pode introduzir comandos e consultar os resultados enquanto trabalha.

  4. Como posso verificar a versão instalada do Rscript?
    Execute Rscript --version no terminal ou na linha de comandos. O comando tem de estar disponível em PATH ou ser invocado pelo caminho completo.

  5. Como posso executar vários scripts R seguidos?
    Numa shell do tipo Unix, ligue os comandos com &&, por exemplo Rscript first.R && Rscript second.R. O segundo comando só é executado se o primeiro terminar com sucesso. Para uma sequência mais longa, coloque as invocações num script de shell ou use outro agendador adequado ao seu sistema.