Почему "c" здесь равно 1000? - PullRequest
0 голосов
/ 08 апреля 2020

Этот l oop перебирает все значения i в range(92:1000), и какое бы значение i ни держало условие true, оно ломает l oop, устанавливая это значение i в 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

Но то, что я ожидал, должно дать значение c = 235, как при i = 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

И оно должно сломаться всякий раз, когда условие выполняется в первый раз.

Где я иду не так?

1 Ответ

1 голос
/ 08 апреля 2020

В R range вычисляет диапазон заданных данных, то есть минимальное и максимальное

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

Кроме того, использование c в качестве имени переменной является очень плохой практикой в ​​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
...