r - 为什么“c”在这里等于 1000?
问题描述
这个循环正在遍历 in 的所有值,i
并且range(92:1000)
无论哪个值i
保持条件为真,它都会通过设置i
in的值来打破循环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
并且只要条件第一次为真,它就应该中断。
我哪里错了?
解决方案
在 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
推荐阅读
- sql - IS NULL 和 IS NOT DISTINCT FROM NULL 之间有区别吗?
- php - SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens - help needed
- c++ - Crypto++ GetModulus() 问题
- ios - 网络请求后 SwiftUI 更新 Elements.count
- javascript - 在 Promise 中,response.status 返回其他 Promise 而不是状态码
- azure - AD B2C:内置登录注册流程的让我登录 cookie 过期时间
- reactjs - Auth0 React SPA API 的访问令牌不正确
- angular - 使用 Proxy.Conf.js 的 Angular 8 显示用户名和密码框
- powershell - 在powershell中将元素添加到数组
- laravel - 是否可以使用回调(laravel 集合)调用方法 pop?