You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何将runner函数输出的列表转换为数据框

循环仅保留最后一次迭代结果的原因

你将res <- data.frame()写在了循环体内部,每一轮迭代都会先把res重置为空数据框,再绑定当前迭代的处理结果,因此循环结束后res中只会存储最后一次i=2的计算结果。

转换为数据框的实现方法

方法1:修正循环写法

将res的初始化操作移到循环外部即可:

# 提前初始化空数据框
res <- data.frame()
# 遍历Output的所有列(共10个窗口的计算结果)
for (i in seq_len(ncol(Output))){
  res <- rbind.data.frame(res, as.data.frame(Output[,i]))
}

方法2:无需显式循环的简洁写法

用do.call配合lapply一行即可完成转换,代码更简洁执行效率也更高:

res <- do.call(rbind, lapply(seq_len(ncol(Output)), function(i) as.data.frame(Output[,i])))

如果习惯使用tidyverse生态,还可以用purrr包的map_dfr实现:

library(purrr)
res <- map_dfr(seq_len(ncol(Output)), ~ as.data.frame(Output[, .x]))

运行上述任意一种方法得到的res就是所有窗口结果按行合并后的完整数据框。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:36:02