R 相关回路不断得到NA

R 相关回路不断得到NA,r,for-loop,correlation,R,For Loop,Correlation,尽管使用了两个完整的列,其中每个元素都是数字,从第2行到第570行中没有数字缺失,但我发现在使用循环查找两列之间的滚动24周相关性时,不可能得到除NA以外的结果 rolling.correlation <- NULL temp <- NULL for(i in 2:547){ temp <- cor(training.set$return.SPY[i:i+23],training.set$return.TLT[i:i+23]) rolling.correlation

尽管使用了两个完整的列,其中每个元素都是数字,从第2行到第570行中没有数字缺失,但我发现在使用循环查找两列之间的滚动24周相关性时,不可能得到除NA以外的结果

rolling.correlation <- NULL
temp <- NULL
for(i in 2:547){
   temp <- cor(training.set$return.SPY[i:i+23],training.set$return.TLT[i:i+23])
   rolling.correlation <- c(rolling.correlation, temp)
} #end "for" loop

rolling.correlation

rolling.correlation看看你这样做会发生什么

5:5+2
# [1] 7
请注意,
的运算符优先级高于
+
,这意味着
5:5+2
与真正需要
5:(5+2)
时的
(5:5)+2
相同。使用

i:(i+23)

事实上,你确定你明白
i:i+23
的意思吗?尝试
5:5+2
。请注意,
的运算符优先级高于
+
。试试
i:(i+23)
.MrFlick你是个救生员。括号起了作用。非常感谢。关于如何使用apply(),我也是一个完全的新手。有没有办法通过使用apply()而不是循环来获得相同的546元素向量?请告知。谢谢大家!<代码>应用
是一个循环。你的写作方式很大程度上取决于你的编码风格。是的,我知道这取决于风格,但我希望尽可能高效。我听说相对于使用apply,循环占用了大量的处理时间,所以我想将这项技能添加到我的曲目中。你能告诉我如何使用apply来完成我在上面的“for”循环中所做的同样的事情吗?我已经使用R很多年了,我从未见过一个正确编码的for循环比*apply函数慢的情况。如果您进行我建议的更改,for循环可能会更快。但这场讨论与你最初的问题无关。