Como executar scripts demorados em segundo plano no R

Algumas tarefas possuem um custo computacional maior do que outras, como, por exemplo, renderizar um gráfico de alta resolução, executar um loop ou estimar modelos mais robustos. Para estes casos é útil executar o código em "segundo plano" mantendo o Console do RStudio livre para trabalhar. Neste exercício demonstramos como fazer isso utilizando o pacote job.

Exemplo 1: renderização de gráficos

A depender da quantidade de dados, a renderização de um gráfico pode se tornar muito lenta. Vamos simular a renderização de um gráfico do ggplot2 com um dataset de 1 milhão de linhas:

# Dataset simulado
n <- 1e6
dataset <- data.frame(x = seq_len(n), y = rnorm(n))
# Criar objeto com gráfico ggplot2
grafico <- ggplot2::ggplot(dataset, ggplot2::aes(x, y)) +
ggplot2::geom_point(size = 0.1, alpha = 0.05)

Com os dados e a "gramática" do gráfico criados, podemos executar sua renderização como uma tarefa (job) na aba Jobs do RStudio. Neste caso iremos realizar a tarefa de renderizar o gráfico salvando o mesmo como um arquivo de imagem no computador, bastando passar o código dentro da função job::job({script aqui}):

# Instalar pacote
if(!require("job")) install.packages("job")
# Renderizar gráfico em um job
job::job({
ggplot2::ggsave("grafico_pontos.png", plot = grafico, width = 7, height = 3)
})

Pode-se acompanhar a execução da tarefa em segundo plano na aba Jobs do RStudio.

Exemplo 2: modelo de regressão

Outro exemplo bastante comum é a estimação de modelos de regressão. Aqui iremos demonstrar a criação de jobs para dois modelos bayesiano simples, usando o pacote brms:

# Carregar pacote
if(!require("brms")) install.packages("brms")
library(brms)
# Preparar dados e criar fórmulas
dados <- mtcars[mtcars$hp > 100, ]
modelo_1 <- mpg ~ hp * wt
modelo_2 <- mpg ~ hp + wt
# Criar jobs para estimar os modelos
job::job({
fit_1 = brms::brm(modelo_1, dados) # job do modelo 1
})
job::job({
fit_2 = brms::brm(modelo_2, dados) # job do modelo 2
})
# Continuar trabalhando no Console
cat("Estou livre! \n\nAtenciosamente, \nConsole do RStudio.")
# Estou livre!
# Atenciosamente, 
# Console do RStudio.

Como visto, o pacote é um forte candidato a entrar no toolkit de trabalho de qualquer pessoa que utilize intensivamente o R e RStudio. Confira estes e outros exemplos na documentação do pacote.

________________________
(*) Para entender mais sobre a linguagem R e suas ferramentas, confira nosso Curso de Introdução ao R para análise de dados.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Simplificando análises de dados manuais do Excel usando o Python

Tratar e analisar dados no Excel pode ser um verdadeiro caos, mesmo que você precise fazer coisas simples como cruzar duas tabelas de dados. Uma solução melhor é o uso de scripts em Python, que possibilitam a automação de tarefas repetitivas e manuais. Neste artigo mostramos um exemplo simples, comparando o Excel versus Python.

Como automatizar o tratamento de dados feito no Excel usando o Python?

Segundo a pesquisa “State of Data Science”, profissionais de dados gastam 3 horas/dia (38% do tempo) apenas preparando os dados, antes mesmo de analisá-los. Neste artigo advogamos que este gasto de tempo pode ser drasticamente reduzido ao utilizar ferramentas open source, como Pandas e Python, para automatizar tarefas repetitivas que costumam ser feitas em Excel.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.