从 sliderInput 更新 rhandsontable

Updating rhandsontable from sliderInput

我面临着与 rhandsontables 相关的各种操作的挑战,尽管它们对于我尝试创建的应用程序来说似乎是无价的。我的第一个挑战是我正在尝试通过从用户输入中过滤原始数据帧来更新 rhandsontable,如从下拉列表 (selectInput) 中选择的那样。

这是一个简化的可重现示例,它让我得到了我想要的结果,但不是通过我希望的方式:

library(shiny)
library(rhandsontable)
library(tidyverse)

counties = as.factor(c(rep("County1", 2), rep("County2", 2)))
compnames = as.factor(c("comp1", "comp2", "comp3", "comp4"))
properties = 1:4
soilsData <- data.frame(county = counties, compname = compnames, property = properties)

ui <- fluidPage(
    
    selectInput(inputId = "selectCounty", label = h4("Select County"), 
                choices = counties,
                selected = "County1",
                multiple = FALSE),
    br(),
    br(),
    rHandsontableOutput('rTable'),
    
)

server <- function(input, output) {
 
    df1 <- df %>% 
        filter(county == "County1", compname == "comp1")
    
    datavalues <- reactiveValues(data = df1)

    output$rTable <- renderRHandsontable ({
        rhandsontable(datavalues$data,
                      rowHeaders = NULL)
    })
}

如何通过选定的 sliderInput 创建 df1?

您可能希望在 ui 中使用 levelscounties 作为您的 choices

此外,在 server 中,您可以使用 reactive 表达式来过滤数据。如果你想对 selectInput 中的变化做出反应(我假设你的意思是,而不是 sliderInput),它应该是一个反应性表达式。

引用时,需要加上括号。例如,如果您调用反应式表达式 datavalues,那么 datavalues() 应该用于 rhandsontable.

中的数据

如果这是您要找的,请告诉我。

library(shiny)
library(rhandsontable)
library(tidyverse)

ui <- fluidPage(
  selectInput(inputId = "selectCounty", 
              label = h4("Select County"), 
              choices = levels(counties),
              selected = "County1",
              multiple = FALSE),
  br(),
  br(),
  rHandsontableOutput('rTable'),
)

server <- function(input, output) {
  
  datavalues <- reactive({
    soilsData %>% 
      filter(county == input$selectCounty, 
             compname == "comp1")
  })
  
  output$rTable <- renderRHandsontable ({
    rhandsontable(datavalues(),
                  rowHeaders = NULL)
  })
  
}