代码之家  ›  专栏  ›  技术社区  ›  bzkl_makiko

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

  •  0
  • bzkl_makiko  · 技术社区  · 7 年前
    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
    > 
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   jdobres    7 年前

    readline 始终返回用户键入的任何字符数据。包装您的 读线 中的语句 as.numeric ,例如:

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

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