了解 R Shiny 模块:shiny::NS(id) 中的错误:缺少参数 "id",没有默认值
Understanding R Shiny modules: Error in shiny::NS(id) : argument "id" is missing, with no default
我正在尝试理解闪亮模块的概念。我正在尝试模块化这个非常简单的 shinydashboard
应用程序:
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(uiOutput("box"))
)
server <- function(input, output, session) {
output$box <- renderValueBox({
valueBox(
subtitle = "Hi",
value = 2
)
})
}
shinyApp(ui, server)
效果如愿。
但是,在模块化时,我不断遇到以下错误:
Error in shiny::NS(id) : argument "id" is missing, with no default
.
#### Modules ####
costumizedValueBox <- function(id) {
ns <- shiny::NS(id)
uiOutput(ns("box"))
}
costumizedValueBoxServer <- function(id) {
moduleServer(
id,
function(input, output, session) {
output$box <- renderValueBox({
valueBox(
subtitle = "Hi",
value = 2
)
})
}
)
}
#### App ####
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(costumizedValueBox())
)
server <- function(input, output, session) {
costumizedValueBoxServer()
}
shinyApp(ui, server)
我尝试了对模块化代码的不同修改,none 其中有效,例如。 G。更改输出(到 textOutput
)或一般设置。错误消息表明 NS
函数存在问题,但我无法弄清楚。
谢谢!
模块(即 costumizedValueBoxServer 和 costumizedValueBox)是具有必需参数的函数。
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(costumizedValueBox("my_id")) # pass in an ID
)
server <- function(input, output, session) {
costumizedValueBoxServer("my_id") # pass in the same ID
}
这就是@Limey 在评论中描述的内容:要了解详细信息,请参见此处https://shiny.rstudio.com/articles/modules.html
library(shiny)
#### Modules ####
costumizedValueBox <- function(id, label = "ValueBox_custom") {
ns <- shiny::NS(id)
uiOutput(ns("box"))
}
costumizedValueBoxServer <- function(id) {
moduleServer(
id,
function(input, output, session) {
output$box <- renderValueBox({
valueBox(
subtitle = "Hi",
value = 2
)
})
}
)
}
#### App ####
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(costumizedValueBox("ValueBox_custom1"))
)
server <- function(input, output, session) {
costumizedValueBoxServer("ValueBox_custom1")
}
shinyApp(ui, server)
是的,当您调用您的模块时,请确保在引号中为它分配一个 ID。干得好,我也一直在学习这个。确保您的 ID 与应用的服务器和 UI 部分中的模块调用相匹配。
这是一个 youtube link,你可能已经看过了,但时间戳显示了我在说什么。
https://www.youtube.com/watch?v=oOYaHsPXLvs
dashboardHeader(),
dashboardSidebar(),
dashboardBody(costumizedValueBox("VBox_id_1")) # pass in an ID
)
server <- function(input, output, session) {
costumizedValueBoxServer("VBox_id_1") # pass in the same ID
}```
我正在尝试理解闪亮模块的概念。我正在尝试模块化这个非常简单的 shinydashboard
应用程序:
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(uiOutput("box"))
)
server <- function(input, output, session) {
output$box <- renderValueBox({
valueBox(
subtitle = "Hi",
value = 2
)
})
}
shinyApp(ui, server)
效果如愿。
但是,在模块化时,我不断遇到以下错误:
Error in shiny::NS(id) : argument "id" is missing, with no default
.
#### Modules ####
costumizedValueBox <- function(id) {
ns <- shiny::NS(id)
uiOutput(ns("box"))
}
costumizedValueBoxServer <- function(id) {
moduleServer(
id,
function(input, output, session) {
output$box <- renderValueBox({
valueBox(
subtitle = "Hi",
value = 2
)
})
}
)
}
#### App ####
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(costumizedValueBox())
)
server <- function(input, output, session) {
costumizedValueBoxServer()
}
shinyApp(ui, server)
我尝试了对模块化代码的不同修改,none 其中有效,例如。 G。更改输出(到 textOutput
)或一般设置。错误消息表明 NS
函数存在问题,但我无法弄清楚。
谢谢!
模块(即 costumizedValueBoxServer 和 costumizedValueBox)是具有必需参数的函数。
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(costumizedValueBox("my_id")) # pass in an ID
)
server <- function(input, output, session) {
costumizedValueBoxServer("my_id") # pass in the same ID
}
这就是@Limey 在评论中描述的内容:要了解详细信息,请参见此处https://shiny.rstudio.com/articles/modules.html
library(shiny)
#### Modules ####
costumizedValueBox <- function(id, label = "ValueBox_custom") {
ns <- shiny::NS(id)
uiOutput(ns("box"))
}
costumizedValueBoxServer <- function(id) {
moduleServer(
id,
function(input, output, session) {
output$box <- renderValueBox({
valueBox(
subtitle = "Hi",
value = 2
)
})
}
)
}
#### App ####
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(costumizedValueBox("ValueBox_custom1"))
)
server <- function(input, output, session) {
costumizedValueBoxServer("ValueBox_custom1")
}
shinyApp(ui, server)
是的,当您调用您的模块时,请确保在引号中为它分配一个 ID。干得好,我也一直在学习这个。确保您的 ID 与应用的服务器和 UI 部分中的模块调用相匹配。 这是一个 youtube link,你可能已经看过了,但时间戳显示了我在说什么。
https://www.youtube.com/watch?v=oOYaHsPXLvs
dashboardHeader(),
dashboardSidebar(),
dashboardBody(costumizedValueBox("VBox_id_1")) # pass in an ID
)
server <- function(input, output, session) {
costumizedValueBoxServer("VBox_id_1") # pass in the same ID
}```