R 在一个闪亮的应用程序中,If语句连续两次不起作用
我有一个闪亮的应用程序,显示3个标签 在R 在一个闪亮的应用程序中,If语句连续两次不起作用,r,shiny,dt,R,Shiny,Dt,我有一个闪亮的应用程序,显示3个标签 在文档选项卡中有一个表。当用户单击第一行的setosa时,他将移动到视图选项卡(仅在单击时可见),并看到一个表。当用户单击第二行的setosa时,他将移动到视图选项卡并看到另一个表。此外,这些表必须仅在视图选项卡上可见 该应用程序似乎工作正常,但如果我单击第一行setosa,移动到视图选项卡,再次返回文档选项卡,然后再次尝试单击第一行setosa,则不会发生任何事情。我必须单击第二行setosa使其再次工作。第二行的setosa也会发生同样的情况 简单地说,
文档
选项卡中有一个表。当用户单击第一行的setosa
时,他将移动到视图
选项卡(仅在单击时可见),并看到一个表。当用户单击第二行的setosa
时,他将移动到视图
选项卡并看到另一个表。此外,这些表必须仅在视图
选项卡上可见
该应用程序似乎工作正常,但如果我单击第一行setosa
,移动到视图
选项卡,再次返回文档
选项卡,然后再次尝试单击第一行setosa
,则不会发生任何事情。我必须单击第二行setosa
使其再次工作。第二行的setosa也会发生同样的情况
简单地说,我不能连续两次执行相同的操作,我觉得是我的if
条件造成的
library(shiny)
library(shinydashboard)
library(shinyWidgets)
library(shinydashboardPlus)
library(DT)
library(shinyjs)
shinyApp(
ui = dashboardPagePlus(
header = dashboardHeaderPlus(title = span(strong("ArmorDoc"),style = "color: black;")
),
sidebar = dashboardSidebar(
),
body = dashboardBody(
useShinyjs(),
tags$hr(),
tabsetPanel(
id ="tabA",
type = "tabs",
tabPanel("Documents",icon = icon("accusoft"),
tags$hr(),
DTOutput("dt1")),
tabPanel("View", icon = icon("table"),
DTOutput("dt3")
),
tabPanel("Upload", icon = icon("table")
)
)
)),
server = function(input, output,session) {
observeEvent(input$tabA, {
if(input$tabA == "Documents"|input$tabA=="Upload"){
hideTab("tabA", "View")
}
})
observeEvent(input$dt1_cell_clicked, {
# alternative: input$dt1_cells_selected
if (req(input$dt1_cell_clicked$value) == "setosa") {
showTab("tabA", "View")
updateTabsetPanel(session, inputId = "tabA", selected = "View")
}
})
output$dt1 <- DT::renderDataTable({
DT::datatable(
iris[1:2,],
filter = "top",
options = list(searchHighlight = TRUE, search = list(search = ""),pageLength = 5,columnDefs = list(list(className = 'dt-left', targets = "_all"))),rownames= FALSE,
selection = list(mode = 'single', target = 'cell')
)
})
output$dt3 <- renderDT(server = F,
if(input$dt1_cell_clicked$row == 1&input$tabA=="View"){
datatable(iris)
}
else if(input$dt1_cell_clicked$row == 2&input$tabA=="View"){
datatable(mtcars)
}
else{
return(NULL)
}
)
}
)
库(闪亮)
图书馆(shinydashboard)
图书馆(shinyWidgets)
图书馆(shinydashboardPlus)
图书馆(DT)
图书馆(shinyjs)
shinyApp(
ui=仪表板PagePlus(
页眉=仪表板页眉(title=span(strong(“ArmorDoc”),style=“color:black;”)
),
侧栏=仪表板侧栏(
),
车身=仪表板车身(
useShinyjs(),
标记$hr(),
选项卡面板(
id=“tabA”,
type=“tabs”,
选项卡面板(“文档”,图标=图标(“accusoft”),
标记$hr(),
数据输出(“dt1”),
选项卡面板(“视图”,图标=图标(“表格”),
dt3输出(“dt3”)
),
选项卡面板(“上传”,图标=图标(“表格”)
)
)
)),
服务器=功能(输入、输出、会话){
ObserveeEvent(输入$tabA{
如果(输入$tabA==“文档”|输入$tabA==“上传”){
hideTab(“tabA”、“视图”)
}
})
ObserveeEvent(输入$dt1\u单元格\u单击{
#备选方案:输入选定的$dt1\u单元格
如果(req(输入$dt1\u单元格\u单击$value)=“setosa”){
显示选项卡(“选项卡”、“视图”)
UpdateAbsetPanel(会话,inputId=“tabA”,selected=“View”)
}
})
可以找到输出$dt1答案。它与observeEvent()
答案中的Proxy
方法相同。它与observeEvent()中的Proxy
方法相同