首页 > 解决方案 > 如何在列表中应用 lag 命令?

问题描述

假设我有以下列表

 Total<-list(matrix(1:64, nrow = 8), matrix(65:128, nrow = 8), matrix(1:64, nrow = 8), matrix(65:128, nrow = 8),)

我想创建一个列表列表,其中包含原始变量的滞后变量。让我仅使用列表中的一个矩阵来更好地解释我的问题。

library(dplyr)
library(purrr)
library(tidyr)
mat <- Total[[1]]
p <- 3 # number of lags
m <- 5 # values to include
mat_df <- as.data.frame(mat)
# Step 1: Lagged by values by mapping over 1:p
mat_lag <- map(1:p, ~ mutate_all(mat_df, lag, .x)) %>% 
  # Step 2: Drop rows with missing
  map(drop_na) %>% 
  # Step 3: Now slice. Only m values starting from the last row are kept
  map(~ slice(.x, (nrow(.x) - m + 1):nrow(.x)))
# Step 4: Convert to list of matrices
mat_lag %>% 
  map(as.matrix)

我想将此代码与列表中的所有矩阵一起使用,但我确实想使用该for命令。我可以使用apply命令吗?

标签: rlistfor-loopmatrixapply

解决方案


推荐阅读