Ошибка: - «Не числовой c аргумент в математической функции» в блестящем приложении R - PullRequest
1 голос
/ 08 апреля 2020

Предположим, у меня есть следующая функция

abc<-function(obs, dist, dir)
{
n=obs
if(dist=='normal1')
x<-rnorm(n, mean=0, sd=1)

if(dist=='normal2')
x<-rnorm(n, mean=0, sd=2)

if(dir=='right')
y<-qbinom(1-0.05, n, 0.5, lower.tail=TRUE, log.p=FALSE)
if(dir=='left')
y<-qbinom(0.05, n, 0.5, lower.tail=TRUE, log.p=FALSE)
if(dir=='both')
y<-qbinom(c(0.05/2, 1-(0.05/2)), n, 0.5, lower.tail=TRUE, log.p=FALSE)


P<-data.frame("mean"=mean(x), "observation"=n, "direction"=y)
return(P)
}

Я использую эту функцию в документе уценки для создания интерактивного фрейма данных с использованием блестящего. Я использовал следующий код:


library(shiny)
shinyApp(
ui <- fluidPage(
  titlePanel("comparison of means"),
  fluidRow( 
    column(3,
           radioButtons("dist", h3("Distribution"),
                        choices = c("normal1" , "normal2"
                                      ))),   

  column(4,
           radioButtons("dir", h4("Direction"),
                        choices = c("left" , "right", "both"
                                      ))), 

  column(5,
         radioButtons("obs", h5("observation"),
                      choices = c(1,2,3,4,5 
                      )))


  ),  
  tableOutput("table")

),

server<-function(input, output){
output$table<-renderTable( {abc(input$obs, input$dist, input$dir)})


}
)

При запуске приложения я получаю следующую ошибку: -

Warning: Error in qbinom: Non-numeric argument to mathematical function

Вероятно, символьный аргумент dir создает некоторые проблемы при вычислении qbinom функция. Может ли кто-нибудь показать мне, где я совершаю ошибку?

1 Ответ

2 голосов
/ 08 апреля 2020

radioButtons предоставляет значение символа. Вы должны заменить input$obs на as.numeric(input$obs) в renderTable.

numericInput может быть лучше, чем radioButtons для компонента наблюдений (не нужно as.numeric, если вы используете numericInput ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...