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

问题描述 投票:0回答:1
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)

}

我希望在R studio中编写计算泊松分布程序。这个程序会出错。 >>“dpois(x,lambda)中的错误:数学函数的非数字参数”

安慰:

  > 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
> 
r distribution poisson
1个回答
1
投票

readline始终返回用户键入的任何字符数据。在readline中包装你的as.numeric语句,如下所示:

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

另外,我不完全确定你的目标,但while循环使用不正确。事实上,它似乎完全没有必要,因为dpois可以简单地给出你为x计算的四个值。

© www.soinside.com 2019 - 2024. All rights reserved.