r - 如果 R 中的语句给出了奇怪的结果
问题描述
我有 741 个值的时间序列,我试图在每个非重叠块中提取其中的最大值。在我的情况下,第一个块包含前 10 个值,第二个包含从第 11 个到第 20 个值,第三个从第 21 个到第 30 个,而最后一个块包含一个值,即第 741 个值。
数据的前三个值:
log_returns <- c(0, 0.00394232277373519, 0.0287804332171326, ...)
我的尝试:
block_maxima = c()
for (i in 1:741){if (i %% 10 == 0) {block_maxima <- c(block_maxima, max(log_returns[i-9: i]))
}}
这段代码给了我结果:
c(0, 0.0287804332171326, 0.0287804332171326, ...)
而且我要:
c(0.0287804332171326, 0.0236378411885054, 0.0185381209989108, ...)
有人可以指出我在代码中犯的错误吗?提前致谢。
解决方案
我们可以将i-9
内部包裹起来()
以避免运算符优先级的问题
block_maxima = c()
for (i in 1:741){
if (i %% 10 == 0) {
block_maxima <- c(block_maxima, max(log_returns[(i-9): i]))
}
}
推荐阅读
- asp.net - 反序列化没有根对象和 1 个数组 ASP.NET MVC 的 json
- google-cloud-platform - 从 GCS 环境中的平面文件加载 Hive 外部表失败
- amazon-web-services - 部署另一个 lambda 函数时调用 lambda 函数
- symfony - Symfony 4.2 utf8 数据在保存到 MySQL 时被切断
- go - 如何扩展现有类型以符合接口
- c# - 用户控件透明度 - C#
- .net - 包装项目描述与商店描述,切入点是什么?
- command-line - 有没有办法使用 gnuplot 在一个图形上拥有 3 个不同的 Y 轴?
- amazon-sns - 如何自定义根据 cloudwatch 规则触发的 SNS 主题通知中的消息?
- java - 超出圆阵列旋转时间限制(TLE)