Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用selectInput()变量信息的分层sidebarLayout()_R_Shiny - Fatal编程技术网

使用selectInput()变量信息的分层sidebarLayout()

使用selectInput()变量信息的分层sidebarLayout(),r,shiny,R,Shiny,我想使用selectInput 变量信息。我有一个宠物信息数据框(myds),例如,我在“selectedvariable1”宠物中选择了狗选项,然后在“selectedvariable3”中,选项必须是“牧羊犬”或“比特犬”,而不是“伯曼”或“短尾”,因为“selectedvariable1”中的选项是狗,而不是猫。 在我的例子中: # Packages library(shiny) # Create my data set pet<-c("dog","d

我想使用
selectInput
变量信息。我有一个宠物信息数据框(
myds
),例如,我在
“selectedvariable1”
宠物中选择了狗选项,然后在
“selectedvariable3”
中,选项必须是“牧羊犬”或“比特犬”,而不是“伯曼”或“短尾”,因为
“selectedvariable1”
中的选项是狗,而不是猫。 在我的例子中:

# Packages
library(shiny)

# Create my data set
pet<-c("dog","dog","cat","cat")
fur<-c("long","short","long","short")
race<-c("collie","pit-bull","birman","bobtail")
sweetness<-c("high","medium","high","medium")
myds<-data.frame(pet,fur,race,sweetness)

# Create the pet shiny dash
ui <- fluidPage(
  titlePanel(title="My Pet Dashboard"),  
  sidebarLayout(
    sidebarPanel(
      uiOutput("selectedvariable1"),
      uiOutput("selectedvariable2"),
      uiOutput("selectedvariable3"),
      uiOutput("selectedvariable4")   
    ),
    mainPanel(
      textOutput("idSaida")
    )
  )
)
server <- function(input, output,session){

  currentvariable1 <- reactive({input$selectedvariable1})
  currentvariable2 <- reactive({input$selectedvariable2})
  currentvariable3 <- reactive({input$selectedvariable3})
  currentvariable4 <- reactive({input$selectedvariable4})

  output$selectedvariable1 <- renderUI({
    selectInput("selectedvariable1",
                label = "Pet type",
                choices = unique(myds$pet),
                selected = TRUE )
  })

    data2 <- reactive({
    data2 <- subset(myds, fur %in% unique(currentvariable2()))
  })  
    output$selectedvariable2 <- renderUI({ 
    data2 <- subset(myds, pet %in% unique(currentvariable1()))   
    selectInput("selectedvariable2",
                label = "Fur style",
                choices = unique(data2$fur),
                selected = TRUE )
  })

    data3 <- reactive({
    data3 <- subset(data2, fur %in% unique(currentvariable2()))
  })  
    output$selectedvariable3 <- renderUI({  
    selectInput("selectedvariable3",
                label = "Race name",
                choices = unique(data3$race),
                selected = TRUE )
  })
    data4 <- reactive({
    data4 <- subset(data2, fur %in% unique(currentvariable3()))
  })    
    output$selectedvariable4 <- renderUI({
    selectInput("selectedvariable4",
                label = "Sweetness behaviour",
                choices = unique(data4$sweetness),
                selected = TRUE )
  }) 
}
shinyApp(ui, server)
##
#包
图书馆(闪亮)
#创建我的数据集

pet类似的功能应该可以工作,将其添加到服务器功能中并适应您的代码:

observeEvent(input$selectedvariable1,{
if (input$selectedvariable1=="dog") {
 updateSelectInput("selectedvariable3", choices=c("collie","pit-bull"))
}
})


类似的功能应该可以工作,将其添加到服务器功能并适应您的代码:

observeEvent(input$selectedvariable1,{
if (input$selectedvariable1=="dog") {
 updateSelectInput("selectedvariable3", choices=c("collie","pit-bull"))
}
})

试试这个

server <- function(input, output,session){
  
  # currentvariable1 <- reactive({input$selectedvariable1})
  # currentvariable2 <- reactive({input$selectedvariable2})
  # currentvariable3 <- reactive({input$selectedvariable3})
  # currentvariable4 <- reactive({input$selectedvariable4})
  
  output$selectedvariable1 <- renderUI({
    selectInput("selectedvariable1",
                label = "Pet type",
                choices = unique(myds$pet),
                selected = TRUE )
  })
  
  data2 <- reactive({
    req(input$selectedvariable1)
    data2 <- subset(myds, pet %in% input$selectedvariable1)
  })  
  output$selectedvariable2 <- renderUI({ 
    req(data2())
    #data2 <- subset(data2(), pet %in% unique(currentvariable1()))   
    selectInput("selectedvariable2",
                label = "Fur style",
                choices = unique(data2()$fur),
                selected = TRUE )
  })
  
  data3 <- reactive({
    req(input$selectedvariable2,data2())
    data3 <- subset(data2(), fur %in% input$selectedvariable2)
  })  
  
  output$selectedvariable3 <- renderUI({  
    req(data2())
    selectInput("selectedvariable3",
                label = "Race name",
                choices = unique(data2()$race),  ##  use data3() instead of data2(), if you wish to subset from data3()
                selected = TRUE )
  })
  data4 <- reactive({
    req(input$selectedvariable3,data2())
    data4 <- subset(data2(), race %in% input$selectedvariable3)
  })    
  output$selectedvariable4 <- renderUI({
    req(data4())
    selectInput("selectedvariable4",
                label = "Sweetness behaviour",
                choices = data4()$sweetness,
                selected = TRUE )
  }) 
}
shinyApp(ui, server)
server试试这个

server <- function(input, output,session){
  
  # currentvariable1 <- reactive({input$selectedvariable1})
  # currentvariable2 <- reactive({input$selectedvariable2})
  # currentvariable3 <- reactive({input$selectedvariable3})
  # currentvariable4 <- reactive({input$selectedvariable4})
  
  output$selectedvariable1 <- renderUI({
    selectInput("selectedvariable1",
                label = "Pet type",
                choices = unique(myds$pet),
                selected = TRUE )
  })
  
  data2 <- reactive({
    req(input$selectedvariable1)
    data2 <- subset(myds, pet %in% input$selectedvariable1)
  })  
  output$selectedvariable2 <- renderUI({ 
    req(data2())
    #data2 <- subset(data2(), pet %in% unique(currentvariable1()))   
    selectInput("selectedvariable2",
                label = "Fur style",
                choices = unique(data2()$fur),
                selected = TRUE )
  })
  
  data3 <- reactive({
    req(input$selectedvariable2,data2())
    data3 <- subset(data2(), fur %in% input$selectedvariable2)
  })  
  
  output$selectedvariable3 <- renderUI({  
    req(data2())
    selectInput("selectedvariable3",
                label = "Race name",
                choices = unique(data2()$race),  ##  use data3() instead of data2(), if you wish to subset from data3()
                selected = TRUE )
  })
  data4 <- reactive({
    req(input$selectedvariable3,data2())
    data4 <- subset(data2(), race %in% input$selectedvariable3)
  })    
  output$selectedvariable4 <- renderUI({
    req(data4())
    selectInput("selectedvariable4",
                label = "Sweetness behaviour",
                choices = data4()$sweetness,
                selected = TRUE )
  }) 
}
shinyApp(ui, server)

server您应该能够修改来自Thank的答案,@YBS,我用您的想法更改了我的示例,但不幸的是还没有解决,
被动的
子集
创建也会出现同样的问题。请注意,您也可以在服务器端使用
更新选择输入(),但这需要您以前的
ui
。您应该能够根据感谢@YBS,我用您的想法更改我的示例,但不幸的是,尚未解决,
被动的
子集的创建也会出现同样的问题。请注意,您也可以使用
更新选择输入()
在服务器端,但这需要您以前的
ui
。很好的YBS!!!非常好用,谢谢!!漂亮的YBS!!!非常好用,谢谢!!