【问题标题】:How to select on reactive variable Shiny R如何在反应变量 Shiny R 上进行选择
【发布时间】:2020-12-28 09:54:54
【问题描述】:

我有 2 列(ID、名称)的数据框和 selectinput 来选择名称(人类可读)。在选择名称时,我想选择 ID 并在循环中使用此 ID (myVar)。

library(shiny)

ID <- c(1,2,3)  
Name <- c("a","b","c")
myDF <- data.frame(ID, Name)

ui <- fluidPage(
  selectInput("wyb", "Wybierz", myDF$Name)
)

server <- function(input, output) {
  myVar <- subset(myDF, Name == input$wyb, ID)  
}

shinyApp(ui, server)

【问题讨论】:

    标签: shiny reactive-programming


    【解决方案1】:

    当您使用input$wyb 时,您需要在服务器端有一个观察者,如下所示。

    library(shiny)
    
    ID <- c(2,3,4)  
    Name <- c("a","b","c")
    myDF <- data.frame(ID, Name)
    
    ui <- fluidPage(
      selectInput("wyb", "Wybierz", myDF$Name),
      DTOutput("tb1")
      
    )
    
    server <- function(input, output) {
      observe({
        req(input$wyb)
        myVar <- subset(myDF, Name == input$wyb)
      
      mydf <- subset(mtcars, mtcars$cyl==myVar$ID*2)
      
      output$tb1 <- renderDT(mydf)
      })
       
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 如何在循环中使用 myVar?你能发一个例子吗? @YBS
    • 请尝试附加代码。我不确定您要达到的目标。因此,请尝试解释您正在尝试做什么以及到目前为止您已经尝试过什么。
    • 第 1 步 - 我希望用户选择项目(用户查看项目名称,我需要项目 ID - 在此示例中,ID 和名称存储在 myDF 中。第 2 步 - 我想向 API 发送请求(为此,我需要项目 ID 而不是用户选择的项目的项目名称)。@YBS
    • 您应该可以使用 myVar$ID 获取项目 ID。您可以将项目 ID 匹配为projectID %in% myVar$ID
    【解决方案2】:

    感谢@YBS 提供解决方案。

        library(shiny)
    ID <- c(2,3,4)  
    Name <- c("a","b","c")
    myDF <- data.frame(ID, Name)
    
    ui <- fluidPage(
      selectInput("wyb", "Wybierz", myDF$Name),
      textOutput("txt1")
      
    )
    
    server <- function(input, output) {
      observe({
        req(input$wyb)
        myVar <- subset(myDF, Name == input$wyb)
        for(i in 1:myVar$ID) {print(i)} 
      })
      
      
    }
    
    shinyApp(ui, server)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-27
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 2018-03-16
      相关资源
      最近更新 更多