R Studio中如何将rainfall_rate与infiltration_loss合并为单个XTS表
R语言合并两个独立XTS字段到同一对象操作指南
问题背景
执行如下读取二进制输出文件的代码后,R Studio环境面板中会生成嵌套列表结构的读取结果,rainfall_rate和infiltration_loss两个时间序列字段分散存储在列表层级中:
output <- read_out("test.out", iType = 0, object_name = "RG1", vIndex = c(0,3))
此前使用的写法仅能提取单个字段,无法实现两个字段统一存入XTS对象x的需求:
# 该写法仅能提取单字段 x <- read_output[["RG1"]][["rainfall_rate"]]
解决方法
两个字段本身均为XTS格式时间序列,且时间索引规则一致时,直接调用xts包的列合并函数即可完成整合,代码如下:
# 先加载xts依赖包,已加载可跳过 library(xts) # 合并两个字段为同一个XTS对象 x <- cbind( rainfall_rate = output[["RG1"]][["rainfall_rate"]], infiltration_loss = output[["RG1"]][["infiltration_loss"]] )
注意事项
- 注意变量名一致性,读取结果赋值给了
output对象,提取字段时不要误写为read_output避免报错 - 若运行时提示合并方法不存在,可显式调用xts包的合并方法:
x <- xts::cbind.xts(output[["RG1"]][["rainfall_rate"]], output[["RG1"]][["infiltration_loss"]]) - 若两个序列的时间戳存在微小精度偏差,可先运行
align.time()统一时间精度后再合并,避免出现不必要的缺失值 - 合并完成后可运行
print(head(x))查看前6行数据,确认两个字段均已正常写入对象
内容的提问来源于stack exchange,提问作者Aravindan Kalai
相关产品推荐
相关产品推荐

