Мне нужно разработать блестящий интерфейс с множеством загруженных CSV. Исходя из моего прошлого опыта с глянцевым, я предпочитаю импортировать эти данные перед работой сервера, таким образом я надеюсь, что каждый сеанс будет работать быстрее Приложение будет перезапускаться каждое утро, поэтому данные будут обновляться ежедневно. Проблема в том, что мне нужно рассмотреть дополнительное refre sh в течение дня, выполняемое вручную с помощью кнопки, которая вызывает скрипт внешнего обновления. Я не могу (но я надеюсь, что это возможно), обновить sh данные, загруженные в начале приложения. Ниже моего (фиктивного) кода:
сервер:
library(shinydashboard)
library(plotly)
library(data.table)
library(dplyr)
path1<-"C:/Users/.../DATA/"
path2<-"C:/Users/../DATA/csv/"
##load dataset at first start
table<-fread(file=paste0(path2,"main.csv"),data.table=FALSE))
shinyServer(function(input, output,session) {
##### refresh data with button####
observeEvent(input$refresh_data,{
source(paste0(path1,"any_script.r"),local = FALSE)
table<<-fread(file=paste0(path2,"main.csv"))
})
#####...ui####
table_r<-reactive({
##obs populate the input for choosing rows to be plotted
obs<-rev(unique(table$anycolumn))
curve_sint<-list(
lotti=obs,
data=obs
)
})
output$obs_ui<-renderUI({
selectInput("input_obs","Please choose the batch:",
choices =table()$obs ,multiple = T)
})
output$plot<-renderPlotly({
table_r()$data%>%
filter(anycolumn==input$input_obs)%>%
plot_ly(
x=~x,
y=~y,
color=~anycolumn,
type="scatter"
)
})
})
пользовательский интерфейс:
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(
title = "shiny"
),
dashboardSidebar(
width=250,
sidebarMenu(
menuItem(
"plot data"
tabName = "clhc",
icon = NULL
),
menuItem(
"Update data",
icon=icon("gear"),
tabName="update_data"
)
)
),
dashboardBody(
tabItems(
tabItem(
tabName = "clhc",
fluidRow(
column(width=3,
uiOutput("obs_ui")
),
),
fluidRow(
column(
width=12,
fluidRow(
plotlyOutput("plot")
)
)
)
),
tabItem(
tabName = "update_data",
fluidRow(
box(
width=12,
title="Sint HC",
actionButton("refresh_sint_hc","Refresh", icon=icon("refresh"))
)
)
)
)
)
)
Я уверен, что сценарий внутри followevent работает нормально, потому что если я поставить отпечаток (nrow (таблица)) после фреда, я вижу, что таблица обновлена правильно. Я не могу понять, где хранятся новые данные, потому что из графика все еще доступны старые данные до обновления. Моя попытка совершенно неверна?