创建xts对象后打印出现异常表头的技术咨询
问题描述
我尝试基于一份标普500样本数据创建xts对象,使用的R代码如下:
sp500 <- read.csv2("SP500.csv", stringsAsFactors = F, header = T, sep = ",", na.strings = ".") sp500$DATE <- as.Date(sp500$DATE) sp500$SP500 <- as.numeric(sp500$SP500) library(xts) sp500idx <- xts(sp500$SP500, order.by = as.Date(sp500$DATE))
通过str(sp500idx)检查显示对象创建成功,但直接打印sp500idx时,输出出现异常表头“m.c.seq.row..seq.n...seq.col..drop...FALSE.”,请问该表头的含义是什么?我猜测这可能与xts对象的观测数量有关,盼解答。
问题解答
这个异常表头是xts内部方法调用时的参数残留,和观测数量无关,本质是print方法的异常输出问题,具体细节及解决方式如下:
- 核心原因:你传入的
sp500$SP500向量残留了seq.row/seq.col这类内部属性(通常是数据框切片或特殊转换操作留下的),xts构建对象时保留了这些属性,打印时被错误解析为列名。 - 验证方式:执行
attributes(sp500$SP500)查看向量属性,若存在seq.row/seq.col即可确认问题。 - 解决办法:
- 构建xts时将向量转为纯数值向量:
sp500idx <- xts(as.vector(sp500$SP500), order.by = sp500$DATE) - 手动清除多余属性:
attr(sp500$SP500, "seq.row") <- NULL attr(sp500$SP500, "seq.col") <- NULL sp500idx <- xts(sp500$SP500, order.by = sp500$DATE) - 改用
[[提取数据框列(避免属性残留):sp500idx <- xts(sp500[["SP500"]], order.by = sp500[["DATE"]])
- 构建xts时将向量转为纯数值向量:
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

