Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
R 被动选择输入以更新表_R_Shiny - Fatal编程技术网

R 被动选择输入以更新表

R 被动选择输入以更新表,r,shiny,R,Shiny,我试图理解R中的反应部分。在这个过程中,我试图根据输入更改更新输出表,同时从年龄下拉列表中选择值。它似乎是通过第一个值来完成的,但是当我从“年龄”下拉列表中更改任何值时,它不会更新我的表。我使用的输入是chooseage。下面是我正在使用的代码 有光泽的图书馆 图书馆仪表板 图书馆 图书馆骑士 图书馆Kableextra 有光泽的图书馆 图书馆之光 ui这是您任务的快速原型 library(shiny) library(tidyverse) library(DT) # 1. Dataset

我试图理解R中的反应部分。在这个过程中,我试图根据输入更改更新输出表,同时从年龄下拉列表中选择值。它似乎是通过第一个值来完成的,但是当我从“年龄”下拉列表中更改任何值时,它不会更新我的表。我使用的输入是chooseage。下面是我正在使用的代码

有光泽的图书馆 图书馆仪表板 图书馆 图书馆骑士 图书馆Kableextra 有光泽的图书馆 图书馆之光
ui这是您任务的快速原型

library(shiny)
library(tidyverse)
library(DT)

# 1. Dataset
df_demo <- data.frame(
  age = c(16, 17, 18, 19, 20),
  name = c("Peter", "Mary", "Mike", "Nick", "Phillipe"))

# 2. Server
server <- function(input, output, session) {

  # 1. UI element 'Age'
  output$ui_select_age <- renderUI({
    selectInput("si_age", "Age", df_demo$age)
  })

  # 2. Reactive data set
  df_data <- reactive({

    # 1. Read UI element
    age_selected <- input$si_age

    # 2. Filter data
    df <- df_demo %>%
      filter(age == age_selected)

    # 3. Return result
    df
  })

  # 3. Datatable
  output$dt_table <- renderDataTable({
      datatable(df_data())
  })

}

# 3. UI
ui <- fluidPage(
  fluidRow(uiOutput("ui_select_age")),
  fluidRow(dataTableOutput("dt_table"))
)


# 4. Run app
shinyApp(ui = ui, server = server)

这是您任务的快速原型

library(shiny)
library(tidyverse)
library(DT)

# 1. Dataset
df_demo <- data.frame(
  age = c(16, 17, 18, 19, 20),
  name = c("Peter", "Mary", "Mike", "Nick", "Phillipe"))

# 2. Server
server <- function(input, output, session) {

  # 1. UI element 'Age'
  output$ui_select_age <- renderUI({
    selectInput("si_age", "Age", df_demo$age)
  })

  # 2. Reactive data set
  df_data <- reactive({

    # 1. Read UI element
    age_selected <- input$si_age

    # 2. Filter data
    df <- df_demo %>%
      filter(age == age_selected)

    # 3. Return result
    df
  })

  # 3. Datatable
  output$dt_table <- renderDataTable({
      datatable(df_data())
  })

}

# 3. UI
ui <- fluidPage(
  fluidRow(uiOutput("ui_select_age")),
  fluidRow(dataTableOutput("dt_table"))
)


# 4. Run app
shinyApp(ui = ui, server = server)

我认为youre shinyApp过于被动,因为服务器中的所有功能都是直接执行的,不需要等待任何选定的输入。所以,要么它会崩溃,要么表现得很怪异。因此,您必须使用req、validate/need或任何observeEvent或EventResponsive功能延迟反应性

也许这段代码可以帮助您,尽管有几种方法可以实现所需的行为

library(shiny)
library(shinydashboard)
library(dplyr)

data(mtcars)
mtcars$age <- sample(x = c(10,20,30,40,50), size = nrow(mtcars), replace = T)
with_demo_vars <- mtcars

ui <- dashboardPage(
  dashboardHeader(disable = F, title = "PATH Study"),
  dashboardSidebar(sidebarMenu(
    menuItem(text = "Population Filter",
             uiOutput("choose_age")
    )
  )
  ),
  dashboardBody(
    tableOutput("smoke")
  )  
)

server <- function(input, output, session) {
  output$choose_age <- renderUI({
    selectInput("selected_age", "Age", with_demo_vars$age)
  })
  myData <- reactive({
    with_demo_vars %>%
      dplyr::filter(age == input$selected_age) 
  })
  output$smoke <- renderTable({
    req(input$selected_age)
    head(myData())
  })
}
shinyApp(ui = ui, server = server)

我认为youre shinyApp过于被动,因为服务器中的所有功能都是直接执行的,不需要等待任何选定的输入。所以,要么它会崩溃,要么表现得很怪异。因此,您必须使用req、validate/need或任何observeEvent或EventResponsive功能延迟反应性

也许这段代码可以帮助您,尽管有几种方法可以实现所需的行为

library(shiny)
library(shinydashboard)
library(dplyr)

data(mtcars)
mtcars$age <- sample(x = c(10,20,30,40,50), size = nrow(mtcars), replace = T)
with_demo_vars <- mtcars

ui <- dashboardPage(
  dashboardHeader(disable = F, title = "PATH Study"),
  dashboardSidebar(sidebarMenu(
    menuItem(text = "Population Filter",
             uiOutput("choose_age")
    )
  )
  ),
  dashboardBody(
    tableOutput("smoke")
  )  
)

server <- function(input, output, session) {
  output$choose_age <- renderUI({
    selectInput("selected_age", "Age", with_demo_vars$age)
  })
  myData <- reactive({
    with_demo_vars %>%
      dplyr::filter(age == input$selected_age) 
  })
  output$smoke <- renderTable({
    req(input$selected_age)
    head(myData())
  })
}
shinyApp(ui = ui, server = server)

这需要我们筛选很多代码。如果你花时间制作一个appWhere,并定义了演示变量,你将更有可能得到一个有用的答案?在服务器函数中使用shinyServer似乎很奇怪。我在运行ui时遇到了一个错误。menuItemProduct类别selectInputabc、h4abc、choices=lista=1中出错:缺少参数,没有默认值。出于某种特定原因,您是否需要在服务器内部使用shinyServer?在collapsable=F处有一个额外的逗号,因此语法无效。带有_demo_vars的变量仍然没有在任何地方定义。尝试在新的/新的R会话中运行代码以进行测试。不要将代码放在代码段块中。这些仅适用于HTML+JS代码,而不是R代码。此外,您的代码在myData被动对象中仍然包含with_demo_vars,因此我们无法运行/测试它。pct_ever_user也没有定义。这需要我们筛选很多代码。如果你花时间制作一个appWhere,并定义了演示变量,你将更有可能得到一个有用的答案?在服务器函数中使用shinyServer似乎很奇怪。我在运行ui时遇到了一个错误。menuItemProduct类别selectInputabc、h4abc、choices=lista=1中出错:缺少参数,没有默认值。出于某种特定原因,您是否需要在服务器内部使用shinyServer?在collapsable=F处有一个额外的逗号,因此语法无效。带有_demo_vars的变量仍然没有在任何地方定义。尝试在新的/新的R会话中运行代码以进行测试。不要将代码放在代码段块中。这些仅适用于HTML+JS代码,而不是R代码。此外,您的代码在myData被动对象中仍然包含with_demo_vars,因此我们无法运行/测试它。pct_ever_user也未定义。