在一个标签上编辑数据框,然后将其正确加载到R Shiny Dashboard中的另一个标签上

时间:2019-01-04 04:03:40

标签: r shiny shinydashboard

我正在建立一个概念证明,用户可以在一个选项卡上编辑一个数据框,然后在另一个选项卡上查看它。我希望用户能够使用相同的基本数据查看许多不同的可视化效果,因此将所有内容都放在一个选项卡上不会对我有用。

到目前为止,我的解决方案是拥有一个写入全局范围的“保存按钮”,以便可以跨选项卡访问数据。但是,由于懒惰,只有在用户尚未单击选项卡之前(即发亮的人不知道该选项卡上的任何更改)之前,此选项才起作用。

对于以下代码,会发生以下情况: 1.使用滑块过滤数据 2.按保存 3.转到第二个标签(有效) 4.重复步骤1和2 5.返回第二个标签(无效)

有人知道如何解决这个问题吗?

服务器代码

function(input, output){

# on initilization  
master$date <- Sys.time()
master$dataframe <- mtcars

output$tab1<-renderDataTable({
   df<-master$dataframe
   display <- df%>%filter(disp > input$slider)
    temp<<-display

 })

 observeEvent(input$save, {
   master$date <<- Sys.time()
   master$dataframe <<- temp
 })

 #tab two
 output$tab2 <- renderDataTable({
 master$dataframe
 })
 }

UI代码

 sidebar <- dashboardSidebar(
 sidebarMenu(
 menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
 menuItem("Widgets", icon = icon("th"), tabName = "widgets",
         badgeLabel = "new", badgeColor = "green")
  )
 )

body <- dashboardBody(
tabItems(
  tabItem(tabName = "dashboard",
    sliderInput("slider", "Choose a number", 0, 200, 50),
    dataTableOutput("tab1"),
    actionButton("save", "Save Filter")
),

tabItem(tabName = "widgets",
      dataTableOutput("tab2")
 )
)
)

dashboardPage(
dashboardHeader(title = "Simple tabs"),
 sidebar,
 body
)

0 个答案:

没有答案