0

我是闪亮应用程序的初学者。所以首先我尝试构建一个应用程序来计算使用时间和速度所覆盖的距离。我收到错误为“长度为零的参数”。然后我 req(input$num_time,input$select_time,input$slider_speed)在没有显示错误消息并且也没有得到输出之后输入了这个命令。我无法找到我出错的地方。请帮助我获得输出。我在下面显示了我使用的代码:

library(shiny)
#library(car)
ui <- fluidPage(
  titlePanel("terrain model"),
  
  sidebarLayout(
    sidebarPanel(
      helpText("To create a suitable model"),
      br(),
      numericInput("num_time",
                   label = h6("Enter time"),
                   value = 1),
      selectInput("select_time", 
                  label = h6(""),
                  choices = list("Hours"= 1,"Minutes" = 2),
                  selected = "1"),
      
      sliderInput("Speed", 
                  label = "Speed:",
                  min = 2, max = 4.5, value = 2),
      br(),
      actionButton("action",label="Refresh & Calculate")
      ),
    
    
      mainPanel(
        textOutput("text_distance")
    )
  )
 )


server <- function(input, output) {
  values <- reactiveValues()
  #calculate distance travelled
  observe({input$action_Calc
    values$int <- isolate({ input$num_time * recode(input$select_time,"1='60';2='1'")*input$slider_speed
      })
    })
  #Display values entered
  
  output$text_distance <- renderText({
    req(input$num_time,input$select_time,input$slider_speed)
    if(input$action_Calc==0)""
    else
    paste("Distance:", round(values$int,0))
  })
  
}

shinyApp(ui, server)
4

1 回答 1

0

我没有发现任何“刷新和计算”按钮的使用,因为一旦任何输入发生变化就会执行计算。

你可以试试这段代码:

ui <- fluidPage(
  titlePanel("terrain model"),
  
  sidebarLayout(
    sidebarPanel(
      helpText("To create a suitable model"),
      br(),
      numericInput("num_time",
                   label = h6("Enter time"),
                   value = 1),
      selectInput("select_time", 
                  label = h6(""),
                  choices = list("Hours"= 1,"Minutes" = 2),
                  selected = "1"),
      
      sliderInput("Speed", 
                  label = "Speed:",
                  min = 2, max = 4.5, value = 2),
      br(),
      actionButton("action",label="Refresh & Calculate")
    ),
    
    mainPanel(
      textOutput("text_distance")
    )
  )
)


server <- function(input, output) {
  #Display values entered
  output$text_distance <- renderText({
    val <- input$num_time/dplyr::recode(input$select_time,"1"=1,"2"=60)*input$Speed * 1000
    paste("Distance:", round(val,0), 'meters')
  })
  
}

shinyApp(ui, server)
于 2021-03-10T06:54:13.093 回答