在 for 循环中滚动应用

Rollapply in for loop

所以,我正在做的是为 xy 坐标创建热图。但我想每隔 30 分钟执行一次。例如,第一个热图将使用从 "00:00:00""00:30:00" 的数据创建,然后是下一个从 "00:01:00""00:31:00".

的数据

我需要帮助的是编写一个 for 循环,它可以从更大的数据库中提取这些行,然后为每个数据括号输出热图。有人告诉我 zoo::rollapply 可能在这个过程中有用,但我不确定它是如何工作的。

数据库有三列xyindiv.timesxy 是坐标系,indiv.times 是一个包含时间的字符变量,例如 "13:04:46" 格式。

for (i in ???) {
  kde <- kde2d(x, y)
  plot_ly(z = kde$z, type = "heatmap")
}

这是创建热图的代码,所以我真的只需要一种方法来提取 30 分钟的时间间隔。

如有任何帮助,我们将不胜感激。

这是数据库的示例:

structure(list(x = c(224.7666, 223.3886, 131.7025, 345.333), 
    y = c(60.7657, 85.73872, 77.35342, 26.24607), indiv.times = Sys.time() +
    cumsum(60*sample(20, size = 10, replace = TRUE)), class = "data.frame", row.names = c(NA, -4L)))

因此,如果其他人有兴趣,我创建了一个索引 i,其中包含从 "00:00:00" 一直到 "24:00:00" 的所有时间。在 for 循环中,您只需要从 df[time < i + 1800 & time > i,] 所在的数据框中提取行。确保您的时间采用时间格式,而不仅仅是字符串。然后您可以使用新提取的数据框在 for 循环中执行任何调整。