为什么“ c”在这里等于1000?

问题描述 投票:0回答:1

此循环遍历i中所有range(92:1000)的值,并且无论i的哪个值满足条件,它都会通过在i中设置c的值来破坏循环,并且当i正在尝试以R语言运行此代码块,这给了我c = 1000。

> c=0
> for (i in range(92:1000)){
+     if(dpois(i,94.32)<=dpois(5,94.32))
+         {c=i;
+         break;
+         }
+ }
> c
[1] 1000

但是我期望它在i = 235时应该给出c = 235的值:-

> dpois(235,94.32)
[1] 2.201473e-34
> dpois(5,94.32)
[1] 6.779258e-34
> dpois(235,94.32)<=dpois(5,94.32)
[1] TRUE

并且只要条件第一次为真,它就应该断开。

我要去哪里错了?

r loops distribution break
1个回答
0
投票

在R中,range计算给定数据的范围,即最小值和最大值

> range(92:1000)
[1]   92 1000

此外,在R中使用c作为变量名也是非常不好的做法。由于c是用于定义向量的内在函数。

以下给出了预期的答案

> c0=0
>  for (i in 92:1000){
+        if(dpois(i,94.32)<=dpois(5,94.32))
+              {
+          
+              c0=i
+              break
+              
+              }
+    }
> c0
[1] 234
© www.soinside.com 2019 - 2024. All rights reserved.