简体   繁体   English

错误:R中数学函数的非数字参数

[英]Error : Non-numeric argument to mathematical function in R

dbl_var<-lambda
probpois <-function(x,  lambda){

  #e<-2.718
prob<-exp(((lambda^x)*(2.718^lambda))/factorial(x))

retun(prob)

}

a<-readline((prompt="Enter a value: "))
b<-readline((prompt="Enter b value: "))
lambda<-readline((prompt="Enter lambda value: "))
x<-(a:b)
while (x<b || x>a ) {

dpois(x ,lambda)

}

ı want to write calculate poisson distribution program in R studio. 我想在R Studio中编写计算泊松分布程序。 This program will an error. 该程序将出错。 >> "Error in dpois(x, lambda) : Non-numeric argument to mathematical function" >> “ dpois(x,lambda)中的错误:数学函数的非数字参数”

Console: 安慰:

  > dbl_var<-lambda
> probpois <-function(x,  lambda){
+   
+       #e<-2.718
+  prob<-exp(((lambda^x)*(2.718^lambda))/factorial(x))
+   
+   retun(prob)
+ 
+ 
+ 
+ }
> a<-readline((prompt="Enter a value: "))
Enter a value: 1
> b<-readline((prompt="Enter b value: "))
Enter b value: 4
> lambda<-readline((prompt="Enter lambda value: "))
Enter lambda value: 1.5
> x<-(a:b)
> while (x<b || x>a ) {
+ 
+ dpois(x ,lambda)
+   
+ }
Error in dpois(x, lambda) : Non-numeric argument to mathematical function
> 

readline always returns whatever the user types as character data. readline始终返回用户键入的任何字符数据。 Wrap your readline statements in as.numeric , like so: readline语句包装为as.numeric ,如下所示:

a <- as.numeric(readline(prompt="Enter a value: "))

In addition, I'm not entirely sure of your goal here, but the while loop is being used incorrectly. 另外,我不太确定您在这里的目标,但是while循环使用不正确。 In fact it seems entirely unnecessary, since dpois can simply be given the four values you've calculated for x . 实际上,这似乎完全没有必要,因为可以简单地为dpois赋予您为x计算的四个值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM