【发布时间】:2019-08-01 02:42:00
【问题描述】:
我想在我的闪亮应用中添加一个蛋白质查看器。加载脚本后,我的应用程序不再响应我的任何输入。下面是使用 mtcars 数据集的我的应用程序的简化版本。
我的代码:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Example"),
dashboardSidebar(
sidebarMenu(id = "sidebarmenu",
selectizeInput("sample2", "Sample: ",
choices = c("cyl", "mpg", "disp", "hp")))),
dashboardBody(
fluidRow(
box(title="3D Structure", width = 6, status="primary", solidHeader =TRUE,
uiOutput("structure_3d"))),
fluidPage(
box(status="primary", solidHeader = FALSE, align = "center",
DT::dataTableOutput("table")))))
server <- function(input, output, session) {
mtcars2 <- reactive({
mtcars2 <- mtcars
return(mtcars2)
})
output$table <- DT::renderDataTable({
mtcars2 <- mtcars2()
mtcars2 <- subset(mtcars2, select = c(input$sample2))
table <- DT::datatable(mtcars2, rownames = FALSE)
})
output$structure_3d <- renderUI({
tabPanel("3D Structure",
tags$head(tags$script(src="http://3Dmol.csb.pitt.edu/build/3Dmol-min.js")),
tags$div(
style="height: 400px; width: 700px: position: relative;",
class='viewer_3Dmoljs',
'data-pdb'='2POR',
'data-backgroundcolor'='0xffffff',
'data-style'='cartoon'))
})
}
shinyApp(ui = ui, server = server)
如何让应用再次对我的输入做出反应?
编辑:
我也尝试将脚本移动到 UI,但表格仍然没有响应输入:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Example"),
dashboardSidebar(
sidebarMenu(id = "sidebarmenu",
selectizeInput("sample2", "Sample: ",
choices = c("cyl", "mpg", "disp", "hp")))),
dashboardBody(
fluidRow(
box(title="3D Structure", width = 6, status="primary", solidHeader =TRUE,
tags$head(tags$script(src="http://3Dmol.csb.pitt.edu/build/3Dmol-min.js")),
tags$div(
style="height: 400px; width: 700px: position: relative;",
class='viewer_3Dmoljs',
'data-pdb'='2POR',
'data-backgroundcolor'='0xffffff',
'data-style'='cartoon'))),
fluidRow(
box(status="primary", solidHeader = FALSE, align = "center",
DT::dataTableOutput("table")))))
server <- function(input, output, session) {
mtcars2 <- reactive({
mtcars2 <- mtcars
return(mtcars2)
})
output$table <- DT::renderDataTable({
mtcars2 <- mtcars2()
mtcars2 <- subset(mtcars2, select = c(input$sample2))
table <- DT::datatable(mtcars2, rownames = FALSE)
})
}
shinyApp(ui = ui, server = server)
【问题讨论】:
标签: r shiny shinydashboard shinyjs shiny-reactivity