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