首页 > 解决方案 > 如何在 R 中使用循环仅对负数进行平均,直到在向量中看到绝对值> 1 的数字?

问题描述

假设我有一个向量 A=c(0.866,-0.142,-0.680,1.600,-1.068)

如何使用循环仅对负数进行平均,直到绝对值> 1的第一个数字?

我正在考虑在 for 循环中嵌套一个 while 循环,但我不确定它是否是正确的轨道。

谢谢!

标签: r

解决方案


这个没有循环的怎么样?

A=c(0.866,-0.142,-0.680,1.600,-1.068)

mean(A[cumprod(abs(A) <= 1) & A<0])
[1] -0.411

cumprod(abs(A) <= 1)将返回真,直到出现绝对值大于 1 的第一个值,组合它将A<0仅返回负值。此后您可以采取平均措施。


推荐阅读