Lista dentro do data.frame

Olá, pessoal. Tudo bem?

Segue uma dúvida que acredito que possam me ajudar.

Tenho o seguinte código:

# Pacotes 

devtools::install_github('wilsonfreitas/rbcb')

library(rbcb)
library(tidyverse)
library(tibbletime)

# Base de dados.

ipca_livres <- rbcb::get_series(code = list("ipca" = 11428))

Em seguida, crio uma função que faz uma modelagem ARIMA e uma rolling regression.

# Construindo a função ARIMA e rolling regression. 

get_ar1 <- function(x){
  
x_ts <- ts(x, frequency = 12)  
  
fit_sar1 <- arima(x_ts, order = c(1,0,0), seasonal = list(order = c(1,0,0)))

out <- list("beta" = fit_sar1[["coef"]]["ar1"],
            "se"   = fit_sar1[["var.coef"]]["ar1", "ar1"] %>% sqrt())

}

roll_get_ar1 <- tibbletime::rollify(.f = get_ar1, window = 60, unlist = FALSE)

Após isso, utilizo a função criada e faço um mutate na base original. No entanto, na variável out é criada uma lista dentro do tibble. Minhha dúvida é como transformar essa variável em duas colunas dentro do data.frame. Eu vi alguma coisa com map_dfr e map_dfc mas não sei como poderia usar.

# Calculando a inércia.

inercia <- ipca_livres %>%
  
  dplyr::mutate(out = roll_get_ar1(ipca)) %>%
  
  dplyr::filter(!is.na(out))

Sendo assim, como eu transfiro uma lista que está dentro do data.frame para duas colunas também dentro do data.frame?

Muito obrigado!

Olá!

Para resolver esse problema você pode usar a função unnest_wider() da seguinte forma:

inercia <- ipca_livres %>%
     dplyr::mutate(out = roll_get_ar1(ipca)) %>% 
     dplyr::filter(!is.na(out)) %>% 
     tidyr::unnest_wider(out)
4 curtidas

Olá, Nicole.

Muito obrigado, deu super certo aqui.

2 curtidas