首页 > 解决方案 > r shiny - 不能将类型“闭包”强制为“双”类型的向量

问题描述

运行闪亮的应用程序时出现了这个烦人的错误。首先,代码:

df2 <- c(2012,2013,2014,2015)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
     sliderInput("year_range",
                  "Select Years:",
                  min = 2012,
                  max = 2019,
                  value = c(2012,2019),
                  ticks = FALSE
     )
    )
    mainPanel( 
      # stuff goes in here
    )
   )
 )

 server <- function(input, output) {
   # put years into variables
   show_years_l <- renderText(input$year_range[1])
   show_years_h <- renderText(input$year_range[2])

   # update list based on years selected
   trim_years <- df2 %>% filter(between(V1, show_years_l, show_years_h))
 }
 
 shinyApp(ui = ui, server = server)

我已经阅读了这些链接,但无法在逻辑上将其应用于我的情况:

R shiny 不能将类型“闭包”强制为“双”类型的向量

R错误:无法将类型“闭包”强制为“双”类型的向量

我尝试将 as.numeric 用于 show_years_l 和 show_years_h 值,但我得到了同样的错误。

 filter(between(V1, as.numeric(show_years_l), as.numeric(show_years_h)))

我还尝试在过滤器语句中将值输入为数字,即 2013、2014,但显示相同的错误。

 filter(between(V1, 2013, 2014))

提前致谢。

标签: rshiny

解决方案


试试这个:

library(tidyverse)
library(shiny)

df2 <- tibble(years = c(2012,2013,2014,2015))

ui <- fluidPage(
    sidebarLayout(
        sidebarPanel(
        sliderInput("year_range",
                    "Select Years:",
                    min = 2012,
                    max = 2019,
                    value = c(2012, 2019),
                    ticks = FALSE)),
        mainPanel(tableOutput('table'))
    )
)

server <- function(input, output) {
    
     
    output$table <-  renderTable({
    filter(df2, years >= input$year_range[1], years <= input$year_range[2])
    })
}

shinyApp(ui = ui, server = server)

推荐阅读