Sono nuovo di R-Shiny e la mia domanda potrebbe essere molto semplice. Dopo ore di riflessione e di ricerca, non ho potuto risolvere il problema. Ecco il problema:relativo a un set di dati di input in R Shiny
1) La mia app chiede all'utente di caricare il suo set di dati.
2) Quindi nel file server, ho letto il set di dati e ho fatto alcune analisi e ho riportato i risultati nell'interfaccia utente.
3) La mia interfaccia utente ha 4 uscite diverse.
4) Ho letto il set di dati nella funzione "rendering" di ciascuna uscita. PROBLEMA: facendo così, i dati sono definiti localmente nell'ambito di ciascuna funzione, il che significa che ho bisogno di leggerlo di nuovo per ogni uscita.
5) Questo è molto inefficiente, c'è qualche alternativa? usando reattivo?
6) Di seguito è riportato un codice di esempio che mostra come ho scritto il mio server.R:
shinyServer(function(input, output) {
# Interactive UI's:
# %Completion
output$myPlot1 <- renderPlot({
inFile <- input$file
if (is.null(inFile)) return(NULL)
data <- read.csv(inFile$datapath, header = TRUE)
# I use the data and generate a plot here
})
output$myPlot2 <- renderPlot({
inFile <- input$file
if (is.null(inFile)) return(NULL)
data <- read.csv(inFile$datapath, header = TRUE)
# I use the data and generate a plot here
})
})
Come posso solo ottenere i dati di input, una volta e basta usare i dati nei miei funzioni di uscita?
Grazie mille,
Ciao @jdharrison, grazie mille per la risposta. In realtà l'ho provato, ma ricevo l'errore che "oggetto di tipo" chiusura "non è subsiabile". – Sam
Si noti che più avanti nelle mie funzioni di rendering si fa riferimento a "myData" e si useranno alcune delle colonne dei dati tramite l'operatore $. Ottengo l'errore sopra ogni volta che uso una colonna come myData $ col1. – Sam
Funziona bene per me. Si accederà alla colonna come 'myData() $ col1', tuttavia normalmente farai prima qualcosa come' mydata <- myData() 'prima nella tua funzione reattiva. – jdharrison