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

xts::to.weekly的indexAt="lastof"参数是否已失效?

xts::to.weekly 的 indexAt="lastof" 参数报错问题解析及解决

问题核心

这是xts包0.14.0版本中的已知bug,并非indexAt="lastof"参数失效。该bug仅影响to.weekly函数,to.monthly的对应逻辑未受影响,因此在R 4.3+版本中会触发你遇到的逻辑运算错误。

报错原因

报错信息Error in !missing(sec) && sec%%1 != 0 : 'length = 144' in coercion to 'logical(1)',是因为to.weekly处理indexAt="lastof"时,内部变量sec的长度不为1,导致需要单值逻辑判断的运算失败,属于函数内部逻辑的漏洞。

解决方案

方法1:手动替换周度数据索引

先生成默认周度聚合数据,再手动将索引替换为每周的最后一天日期:

set.seed(1234)
len <- 1000
fake <- zoo::zoo(rnorm(len, mean = 0.001, sd = 0.0005), order.by = seq.Date(from = as.Date("2000-01-01", tz = "UTC"), length.out = len, by = "day"))

# 生成默认周度数据
weekly_default <- xts::to.weekly(fake, OHLC = F, drop.time = T)
# 获取原序列中每周的最后一天日期
library(lubridate)
week_groups <- floor_date(index(fake), "week", week_start = 7)  # 按周日作为周最后一天分组
last_days <- index(fake)[!duplicated(week_groups, fromLast = TRUE)]
# 替换索引
lastof_weekly <- weekly_default
index(lastof_weekly) <- last_days

# 验证结果
head(lastof_weekly)

方法2:降级xts版本到0.13.1

该bug是在xts 0.14.0版本引入的,降级到旧版本可直接解决问题:

# 需要先安装devtools包(如果未安装)
# install.packages("devtools")
devtools::install_version("xts", version = "0.13.1")

方法3:安装xts开发版修复bug

该问题已在xts的开发分支中修复,可直接安装开发版:

devtools::install_github("joshuaulrich/xts")

内容的提问来源于stack exchange,提问作者nikrepj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:26:10