Я создаю подтверждение концепции, в которой пользователь может редактировать фрейм данных на одной вкладке, а затем просматривать его на другой.Я хотел бы, чтобы пользователь мог просматривать много разных визуализаций с одними и теми же базовыми данными, поэтому размещение всего на одной вкладке не сделает это за меня.
Мое решение до сих пор состоит в том, чтобы иметь «кнопку сохранения», которая записывает данные в глобальную область, чтобы к данным можно было обращаться через вкладки.Однако из-за 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
)