未找到 rshiny 中的范围输入
Scoping input in rshiny not found
无法生成序列,因为 input$amount
未生成,可能是由于我的文件夹结构。
错误信息:
考虑一个具有以下文件夹结构的 rshiny 应用程序:
.
├── app.R
├── _ui_elements
| ├── body.R
| ├── sidebar.R
| └── _tabs
| └── example_tab.R
其中代码如下:
app.R
library(shiny)
library(tidyverse)
library(shinydashboard)
library(plotly)
source("ui_elements/sidebar.R", local = TRUE)
source("ui_elements/body.R", local = TRUE)
ui <-
dashboardPage(
dashboardHeader(title = "Example"),
sidebar,
body
)
server <- function(input, output, session) {
amount_df <- reactive({
tibble(amount = seq(1, input$amount))
})
output$amount_curve <- renderPlotly({
amount_df() %>%
ggplot(aes(amount)) +
geom_point()
})
}
shinyApp(ui = ui, server = server)
body.R
source("ui_elements/tabs/tab_example.R", local = TRUE)
body <-
dashboardBody(
tabItems(
tab_example
)
)
sidebar.R
sidebar <-
dashboardSidebar(
sidebarMenu(
menuItem("Example", tabName = "example", icon = icon("couch"))
)
)
tab_example.R
tab_example <-
tabItem(tabName = "example",
fluidRow(
column(6, numericInput("Amount","amount", min = 1, max = 1000, value = 500)),
column(6, plotlyOutput("amount_curve"))
)
)
问题不在于文件结构,而在于参数的传递。参数 inputId
和 label
的顺序错误。将 tab_example.R
中的代码更改为以下内容。
tab_example <-
tabItem(tabName = "example",
fluidRow(
column(6, numericInput(inputId = "amount",label = "Amount", min = 1, max = 1000, value = 500)),
column(6, plotlyOutput("amount_curve"))
)
)
那时你会遇到新的问题,但我认为你可能可以自己解决它们。
无法生成序列,因为 input$amount
未生成,可能是由于我的文件夹结构。
错误信息:
考虑一个具有以下文件夹结构的 rshiny 应用程序:
.
├── app.R
├── _ui_elements
| ├── body.R
| ├── sidebar.R
| └── _tabs
| └── example_tab.R
其中代码如下:
app.R
library(shiny)
library(tidyverse)
library(shinydashboard)
library(plotly)
source("ui_elements/sidebar.R", local = TRUE)
source("ui_elements/body.R", local = TRUE)
ui <-
dashboardPage(
dashboardHeader(title = "Example"),
sidebar,
body
)
server <- function(input, output, session) {
amount_df <- reactive({
tibble(amount = seq(1, input$amount))
})
output$amount_curve <- renderPlotly({
amount_df() %>%
ggplot(aes(amount)) +
geom_point()
})
}
shinyApp(ui = ui, server = server)
body.R
source("ui_elements/tabs/tab_example.R", local = TRUE)
body <-
dashboardBody(
tabItems(
tab_example
)
)
sidebar.R
sidebar <-
dashboardSidebar(
sidebarMenu(
menuItem("Example", tabName = "example", icon = icon("couch"))
)
)
tab_example.R
tab_example <-
tabItem(tabName = "example",
fluidRow(
column(6, numericInput("Amount","amount", min = 1, max = 1000, value = 500)),
column(6, plotlyOutput("amount_curve"))
)
)
问题不在于文件结构,而在于参数的传递。参数 inputId
和 label
的顺序错误。将 tab_example.R
中的代码更改为以下内容。
tab_example <-
tabItem(tabName = "example",
fluidRow(
column(6, numericInput(inputId = "amount",label = "Amount", min = 1, max = 1000, value = 500)),
column(6, plotlyOutput("amount_curve"))
)
)
那时你会遇到新的问题,但我认为你可能可以自己解决它们。