TTR包中运行CTI函数报错:cti_10尺寸不符如何解决?
问题解决:CTI函数返回长度不匹配的错误
错误原因
CTI()计算技术指标时,需要连续n个数据点才能生成第一个有效结果。当设置n=10时,前9行数据无法满足计算条件,因此函数返回的向量长度为5550-9=5541,而dplyr::mutate要求新列长度必须与原数据行数完全一致,这就导致了长度不匹配的报错。
解决方法
TTR包的大部分技术指标函数都支持na.pad参数,将其设为TRUE即可自动在结果开头填充n-1个NA,让输出向量长度与输入数据保持一致。修改后的代码如下:
library(tidyverse) library(TTR) data(ttrc) ttrc %>% mutate(cti_10 = CTI(Close, n=10, na.pad=TRUE))
原理说明
na.pad=TRUE会在CTI()的计算结果前补充n-1个缺失值(NA),使得最终返回的向量长度与输入的Close列完全相同(5550行),这样mutate就能顺利将新列添加到数据框中。
内容的提问来源于stack exchange,提问作者anderwyang
相关产品推荐
相关产品推荐

