【问题标题】:How to create a temporary vector inside a for loop in R?如何在 R 的 for 循环中创建一个临时向量?
【发布时间】:2020-02-21 14:38:11
【问题描述】:

我正在尝试在 R 中创建一个简单的 for 循环,它应该从主数据向量创建一个临时子集向量,并对临时向量进行后续计算。以下是我的代码:

count <- 0
window_size<-100

for (counter in 1:length(main_data_vector)-window_size) 
{
temp_window <-main_data_vector[counter:counter+window_size]
count = count+1
}

当我运行代码时,计数器在 length(main_data_vector)-window_size 处停止(预期)。但是 temp_window 的长度保持为 1(应该是 100)并且计数到 length(main_data_vector) 的末尾(应该与 counter 具有相同的值)。我对 rollapply 不熟悉(网上的例子只展示了 sum 和 mean 等基本函数)。

谁能指出我在这里做错了什么?

谢谢。

【问题讨论】:

  • [counter:(counter+window_size-1)] 你可以使用rollapply() from zoo
  • count = count+1 已过时,由循环完成。
  • @jogo 非常感谢 :)

标签: r for-loop rollapply


【解决方案1】:

您应该为counter+window_size-1length(main_data_vector)-window_size+1 添加圆括号,即,

for (counter in 1:(length(main_data_vector)-window_size+1)) 
{
     temp_window <-main_data_vector[counter:(counter+window_size-1)]
}

【讨论】:

  • 非常感谢您的快速回复。该代码目前似乎正在运行。我因为缺少两个括号而感到沮丧。
  • 现在这是zoo::rollapply()的手工版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多