【问题标题】:R save date and time interval and sequence of date into a listR将日期和时间间隔以及日期序列保存到列表中
【发布时间】:2023-10-04 02:24:01
【问题描述】:

谁能告诉我为什么这不起作用:

a<-list()
b<-as.array(as.Date(c,format="%d%b%Y))

for(i in 1:10){
 for(j in 1:10){
    a[[i]][j]<-min(b)
 }
}

从润滑包 seq.Date() 分配日期或 interval(),这些都不适用于循环内的 a[[i]][j]。我不知道为什么。

刚刚更新:这是我能给出的最接近的例子。 min(b) 将始终尝试为 a 中的元素分配日期。

我的问题是,为什么分配的 a[[i]][j] 是一个数值,而不是一个日期对象。

我无法格式化 a[[i]][j],但我可以将 a[[i]] 格式化为日期对象数组。

你们知道为什么吗?

【问题讨论】:

  • a[[1]]&lt;-vector() 在分配之前使用a[[1]][1]&lt;-as.Date("2001-01-01",origin="1970-01-01")
  • 既然b是在循环之外定义的,你不就是把所有a[[i]][j]的值都赋值为同一个东西吗?

标签: r date loops


【解决方案1】:

您无法访问您尚未创建的列表中的元素:

a <- list()
a[[1]]
# Error in a[[1]] : object of type 'builtin' is not subsettable

要构建一个列表,其中第一个元素是您的单个日期元素,您可以使用:

a <- list(as.Date("2001-01-01",origin="1970-01-01"))
a[[1]][1]
# [1] "2001-01-01"

【讨论】:

  • 谢谢!无论如何,我可以在循环中创建一个列表吗?我必须创建一个 [[1~10]][1~10] 总共 100 个日期元素,你知道我该怎么做吗?
  • 如果你编辑你的 OP 来描述你想要做的更多的事情,那么可能有比使用循环来构建这个列表更好的方法。
  • 刚刚编辑,如您所见,我不能每次都创建一个列表,您知道如何将日期分配给该列表的每个元素吗?