R语言中从时间序列交叉验证拆分列表提取测试集的更优方法
优化实现方法
你原来的手动逐个提取测试集再合并的写法可以大幅简化,两种常用实现方案如下:
方案1:tidyverse 简洁写法(推荐)
利用purrr包的迭代函数直接完成遍历提取、按行合并、日期排序全流程,不需要手动创建多个临时变量,拆分数量变化时也不需要修改代码:
# 仅需3行代码即可完成你原来的所有操作 df1 <- resamples_tscv$splits %>% purrr::map_dfr(testing) %>% dplyr::arrange(date)
说明:
map_dfr()会自动遍历所有拆分对象,调用testing()提取测试集,再自动按行拼接成统一的数据框,替代你手动创建10个t变量+do.call(rbind)的操作arrange(date)直接按日期列排序,m750自带的date列默认是Date格式,不需要额外做格式转换
方案2:纯基础R简化写法
如果不想依赖tidyverse函数,也可以避免手动逐个提取拆分:
# 批量提取所有测试集 test_list <- lapply(resamples_tscv$splits, testing) # 合并+排序 df <- do.call("rbind", test_list) df1 <- df[order(df$date), ]
内容的提问来源于stack exchange,提问作者shafi Q
相关产品推荐
相关产品推荐

