R 将lappy调用的输出写入单个表

R 将lappy调用的输出写入单个表,r,lapply,R,Lapply,我在数据集中使用Lappy作为 dt <- read.table(text ="Year Premium Silver Budget Jan2016 112354 36745 456563 Feb2016 1233445 234322 4533345 Mar2016 13456544 346755 34564422", header = TRUE) library

我在数据集中使用Lappy作为

dt <- read.table(text ="Year         Premium     Silver     Budget
Jan2016      112354      36745      456563       
Feb2016      1233445     234322     4533345
Mar2016      13456544    346755     34564422", header = TRUE)

library(forecast)
library(data.table)
dt <- data.table(dt)
res <- lapply(c("Premium", "Silver", "Budget"), function(x) {
  count <- dt[, get(x)]
  tickets <-
    ts(count, frequency = 12,start = c(2016, 1),end = c(2018, 6)
    )
  pi = auto.arima(tickets)
  forecast(pi, h = 12)
})
我想将此数据写入表中,如下所示

Month_year     Premium         Silver        Budget
Apr 2019      2.4078098       12.4078098    32.4078098 
May 2019      0.2415010       10.2415010    30.2415010
Jun 2019      0.3093233       10.3093233    30.3093233 
Jul 2019      2.2816647       12.2816647    32.2816647
我一直在使用下面的,以获得一个单一类别的预期结果

df <- data.frame(res)
      newdf<- df %>% rownames_to_column("month_year")
      newq <- data.frame(newdf$month_year,newdf$Point.Forecast)

df我们将'res'的名称设置为'dt'列名(除'Year'列外),循环遍历'res'的名称,在提取第一列后将其转换为
data.table
(这可以通过提取
mean
或转换为
data.frame
,然后获得第一列来完成),通过
merge`ing on'Month\u Year'将减少为单个数据

names(res) <- names(dt)[-1]
lst1 <- lapply(names(res), function(x) setnames(setDT(as.data.frame(res[[x]])[1], 
            keep.rownames = TRUE), c("Month_Year", x))[]) 
Reduce(function(...) merge(..., by = "Month_Year"), lst1)

这太棒了!谢谢!!:)
names(res) <- names(dt)[-1]
lst1 <- lapply(names(res), function(x) setnames(setDT(as.data.frame(res[[x]])[1], 
            keep.rownames = TRUE), c("Month_Year", x))[]) 
Reduce(function(...) merge(..., by = "Month_Year"), lst1)
library(tidyverse)
imap(res, ~ .x %>% 
               as.data.frame %>% 
               select(!! .y := `Point Forecast`) %>% 
               rownames_to_column("Month_year")) %>% 
               reduce(inner_join, by = "Month_year")