1. ホーム
  2. r

[解決済み] エラー: Rの数学関数への非数値引数

2022-02-09 11:33:23

質問

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
> 

解決方法は?

readline は、ユーザーが文字データとして入力したものを常に返します。そのため readline ステートメントを as.numeric というように

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

さらに、ここでの狙いが全く分かりませんが while ループの使い方が間違っています。実際、ループはまったく必要ないように思われます。 dpois について計算した4つの値を与えるだけでよいのです。 x .