rollapply 可以返回矩阵列表吗?

2024-06-11

我想使用滚动窗口生成协方差矩阵(和均值向量)。但在我所有的尝试中rollapply堆叠协方差矩阵cov并且耗尽了预先分配的空间(例如,如果我的原始数据有 40 个观察值,那么rollapply不能返回超过 40 行)。

有什么方法可以让我得到rollapply返回矩阵列表?或者返回一个data.frame比原来的大data.frame,我可以手动将其拆分为列表吗?我的最终目标是建立一个面板,将面板分成一个单独的列表data.frames,计算每个数据帧的滚动协方差和均值,然后使用这些协方差列表和下游均值与一群个体进行比较。

这是一些代码。我的问题是my.fun不会返回所有协方差矩阵计算的数据。是我自己编写代码的最佳选择rollapply?或者我自己的cov返回一个向量,我将其转换回矩阵?谢谢!

library("zoo")
data.df <- data.frame(sic = rep(1:10, each = 40),
                      year = rep(1:40, len = 10*40),
                      one = rnorm(10*40),
                      two = 2*rnorm(10*40),
                      three = 3*rnorm(10*40))
data.list <- split(data.df, data.df$sic)
data.list <- lapply(data.list, zoo)
my.fun <- function(x) {
    x <- x[, c("one", "two", "three")]
    rollapply(x,
              width = 10, 
              FUN = cov,
              by.column = F, 
              align = "right")
}
cov.list <- lapply(data.list, FUN = my.fun)

看了一眼之后rollapply.zoo代码,我认为没有办法让它做你想做的事。不过,滚动你自己的函数并不那么困难(双关语)。

rollcov <- function(x, width=10) {
  len <- NROW(x)
  add <- rep(1:(len-width)-1,each=width)
  seq.list <- split(rep(1:width,len-width)+add, add)
  lapply(seq.list, function(y) cov(x[y,]))
}

rollcov(data.list[[1]][,c("one","two","three")],10)
all <- lapply(data.list, function(x) rollcov(x[,c("one","two","three")],10))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rollapply 可以返回矩阵列表吗? 的相关文章

  • 双精度数据类型和数值数据类型之间的区别

    R编程中双精度数据类型和数值数据类型有什么区别 From stat ethz ch https stat ethz ch R manual R devel library base html double htm R 的浮点向量有两个名称
  • 随着数据帧变大,如何防止 rbind() 变得非常慢?

    我有一个只有 1 行的数据框 为此 我开始使用 rbind 添加行 df mydataframe with only one row for i in 1 20000 df lt rbind df newrow 随着我的成长 这变得非常缓慢
  • 以对数刻度绘制较长的 y 轴刻度,刻度向外

    我之前有一篇关于在特定 y 轴值处绘制较长刻度的文章 在特定 y 轴值处绘制较长的刻度 https stackoverflow com questions 51335424 plotting longer ticks at particul
  • 如何重新格式化数据并映射它?

    假设我有数据 其中列名称是城市 行名称是经度和纬度 Columbus Nashville Austin Washington D C London Manchester lon 82 99879 86 7816 97 74306 77 03
  • 将outer() 与多变量函数一起使用

    假设你有一个函数f lt function x y z 您将如何向一个参数传递一个常量 但让其他参数发生变化 换句话说 我想做这样的事情 output lt outer x y f x y z 2 这段代码不会评估 但是有没有办法做到这一点
  • 通过 R 中的方向矩阵进行回溯

    我有一个这样的矩阵 https i stack imgur com mzeRI png https i stack imgur com mzeRI png 你可以像这样加载它 matrix structure c C G C A 0 V V
  • 使用 R 绘图将目录添加到 PDF

    我正在 R 中创建大量绘图并将它们保存为 PDF 使用 grDevices pdf 有没有一种简单的方法可以在创建 PDF 时将 元数据 目录添加到 PDF 中 我并不是想添加一个单独的页面 而是添加一个 TOC 像 Preview app
  • “foreach”并行循环返回 s

    我正在尝试并行处理多个列表项 我的目标是 根据每列的值运行一些标签函数 然后返回带有节点名称 列名称和处理后的标签的数据帧 使用普通的 for 循环 工作流程可以正常工作 但是 当我尝试在 foreach 循环中执行相同的操作时 返回的结果
  • 将数据帧的每一列乘以向量的相应值[重复]

    这个问题在这里已经有答案了 我有以下数据框和向量 dframe lt as data frame matrix 1 9 3 vector lt c 2 3 4 我想将每一列相乘dframe通过相应的值vector 这不会做 gt vecto
  • 包“diamonds”不可用(对于 R 版本 3.0.0)[重复]

    这个问题在这里已经有答案了 在我的 R 环境中拥有钻石包 数据集的简单方法是什么 我是使用 RStudio 3 0 的新手 gt install packages diamonds Warning in install packages p
  • knitr pandoc:“无法使用 pdf writer 生成 pdf 输出”

    Up front using pandoc 在knitr中 当尝试将 md或 Rmd编译为PDF时 它会抱怨 我正在简化流程可重复的研究 正如许多地方所记录的那样 我在用着pandoc and knitr并制作出色的文档 我还试图为一些不太
  • R 绘制一些 unicode 字符,但不绘制其他字符

    我们的系统管理员刚刚将我们的操作系统升级到 SLES12SP1 我重新安装了 Rv3 2 3 并尝试绘图 我用cairo pdf并尝试绘制 x 标签为的图 u0298即太阳能符号 但它不起作用 标签只是空白 例如 cairo pdf Rpl
  • R ggplot结合颜色图例和不同因子长度的填充

    我正在使用不完整因子设计的数据绘制图表 由于设计的原因 我的颜色手动比例和填充手动比例的长度不同 因此 我得到了两个传说 我怎样才能删除其中之一或者更好地将它们组合起来 我看过这些问题 合并单独的大小并填充 ggplot 中的图例 http
  • 如何使用 ggplot2 在轴标签中使用上标

    如何在x轴上打印埃平方 我尝试如下 labs x x axis 2 y y axis 我们可以用bquote library ggplot2 ggplot mtcars aes hp mpg geom point labs x bquote
  • R 数据框中的重复行

    我正在尝试使用下面的代码复制数据框中的行 但是 我发现它很慢 duprow df 1 for i in 1 2000 print i df rbind df duprow 有更快的方法吗 您可以使用rep 例如对于数据框第 1 行的 5 个
  • 按组渐进串联列[重复]

    这个问题在这里已经有答案了 假设我有这个输入 ID date 1 date 2 str 1 1 2010 07 04 2008 01 20 A 2 2 2015 07 01 2011 08 31 C 3 3 2015 03 06 2013
  • 没有适用于“filter_”的方法应用于类“c('double', 'numeric')”的对象

    使用下面的代码 我尝试过滤我的数据集 以便仅选择 CG less14 0 和 CG High14 0 的数据集 我收到错误 没有适用于 filter 的方法应用于 c double numeric 类的对象 我的代码有问题吗 married
  • 如何在R中绘制堆积柱形图?

    有谁知道如何使用 R 绘制由超过 1 个变量堆叠的列的直方图 就像excel中的 堆积柱形图 一样 谢谢你 我假设您确实想要一个条形图而不是直方图 在这种情况下 barplot从标准图形或barchart格子包中的两者都可以做到 或者使用
  • 在 ggplot2 中隐藏单个几何图例

    我将相同的变量 颜色 映射到两个不同几何图形中的颜色 我希望它们要么出现在单独的图例中 DHJ 和 EFI 要么最好完全跳过第二个图例 对于 E F 和 I 目前 R 将两者混合在一起 并给我一个图例 其中按字母顺序列出了 DEFHIJ 所
  • 如何为 R 中接下来的 2 个单元格复制相同的列值[重复]

    这个问题在这里已经有答案了 我正在尝试使用 R 为列中接下来的 2 个单元格复制相同的列值 我有以下形式的数据框 Time World Cate Data 1994 Africa A 12 1994 B 17 1994 C 22 1994

随机推荐