Отредактируйте фрейм данных на одной вкладке и загрузите его правильно на другой в R Shiny Dashboard - PullRequest
0 голосов
/ 04 января 2019

Я создаю подтверждение концепции, в которой пользователь может редактировать фрейм данных на одной вкладке, а затем просматривать его на другой.Я хотел бы, чтобы пользователь мог просматривать много разных визуализаций с одними и теми же базовыми данными, поэтому размещение всего на одной вкладке не сделает это за меня.

Мое решение до сих пор состоит в том, чтобы иметь «кнопку сохранения», которая записывает данные в глобальную область, чтобы к данным можно было обращаться через вкладки.Однако из-за lazyeval это работает только в том случае, если пользователь еще не нажимал на вкладку, то есть блестящий не знает, что что-то изменилось на этой вкладке.

Для приведенного ниже кода, вот что происходит: 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
 })
 }

Код интерфейса пользователя

 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
)
...