无法从tibble列表按指定索引向量提取全部日期值的问题
问题排查与解决方法
错误原因
你编写的for循环每次迭代时都直接对datetr整体赋值,覆盖了上一轮的计算结果,因此循环结束后仅保留了最后一次迭代取出的单个日期值,无法得到长度为106的结果向量。
解决方法
方案1:修改原有for循环逻辑
提前初始化和待提取数据长度匹配的空POSIXct向量,每次迭代为对应位置赋值即可:
# 初始化长度与stagt一致的空日期向量 datetr <- as.POSIXct(vector(length = length(stagt))) for (i in seq_along(dts)){ datetr[i] <- dts[[i]][[1]][[stagt[i]]] }
如果你的日期列本身已经是POSIXct格式,不需要每次迭代都重复调用as.POSIXct做类型转换。
方案2:用向量化函数实现(代码更简洁)
如果使用tidyverse生态的purrr包,可通过map2系列函数一行完成批量提取:
library(purrr) datetr <- map2_posix(dts, stagt, function(df, idx) df[[1]][[idx]])
如果偏好base R语法,可使用mapply实现:
datetr <- as.POSIXct( mapply(function(df, idx) df[[1]][[idx]], dts, stagt), origin = "1970-01-01" )
内容的提问来源于stack exchange,提问作者Marc_P
相关产品推荐
相关产品推荐

