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.