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

如何将合并后的xts对象还原为带原名称的列表?

还原合并后的xts对象列表

要将合并后的merge_li还原为原列表li的结构(保留原列表名称及内部列名),可以利用xts合并后的列名规则(原对象名+.+原列名)来拆分分组,步骤如下:

实现代码

library(xts)

# 提取合并对象的列名
col_names <- colnames(merge_li)

# 拆分列名:仅按第一个点分割,避免对象名含点时出错
split_names <- strsplit(col_names, "\\.", split = 1)
obj_names <- sapply(split_names, `[`, 1)  # 提取原列表对象名称
orig_colnames <- sapply(split_names, `[`, 2)  # 提取原xts内部列名

# 按原对象名称分组列索引
obj_col_groups <- split(seq_along(col_names), obj_names)

# 遍历分组,还原每个原xts对象
restored_li <- lapply(names(obj_col_groups), function(obj_name) {
    # 提取当前对象对应的列
    target_cols <- obj_col_groups[[obj_name]]
    sub_xts <- merge_li[, target_cols]
    # 恢复原列名
    colnames(sub_xts) <- orig_colnames[target_cols]
    # 去掉合并时补充的NA行,还原原xts的行结构
    na.omit(sub_xts)
})

# 给还原后的列表设置原名称
names(restored_li) <- names(obj_col_groups)

验证结果

可以通过以下代码确认还原后的列表与原列表结构、数据完全一致:

# 对比结构
str(li)
str(restored_li)

# 逐对象对比数据
all.equal(li[[1]], restored_li[[1]])
all.equal(li[[2]], restored_li[[2]])
all.equal(li[[3]], restored_li[[3]])

内容的提问来源于stack exchange,提问作者mr.T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:30:04