此循环遍历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中,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