首页 > 解决方案 > 为什么“c”在这里等于 1000?

问题描述

这个循环正在遍历 in 的所有值,i并且range(92:1000)无论哪个值i保持条件为真,它都会通过设置iin的值来打破循环c,当我尝试用 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

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

我哪里错了?

标签: rloopsdistributionbreak

解决方案


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

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

此外,c在 R 中用作变量名是非常糟糕的做法。因为c它是用于定义向量的内在函数。

下面给出了预期的答案

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

推荐阅读