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

Automatizando a Construção de Códigos em Python com LangGraph

Neste post, mostramos como construir um agente de código em Python utilizando LangGraph, LangChain e Gemini. A proposta é construir um protótipo para automatizar o ciclo completo de geração, execução e correção de código com o uso de LLMs, organizando o processo em um grafo de estados.

Análise de Dados com REPL Tool e LLM usando LangGraph

Neste post, vamos mostrar como você pode criar um agente que interpreta e executa código Python em tempo real, utilizando o REPL-Tool e um LLM da família Gemini. Começamos com um exemplo genérico e, em seguida, aplicamos a mesma estrutura à análise econômica de uma série histórica do IPCA.

Frameworks para criar AI Agents

Neste post, vamos dar o primeiro passo rumo à construção de Agentes de IA mais sofisticados, capazes de tomar decisões, interagir com ferramentas externas e lidar com tarefas complexas. Para isso, precisamos entender o papel dos frameworks agenticos (ou agentic frameworks) e como eles podem facilitar esse processo. Aqui introduzimos dois frameworks populares de desenvolvimento de Agentes de IA.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

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.