2016-11-22 1 views
1

L'utilisation brillante au sein Flexdashboard Je veux tracer et afficher une trame de données où cette trame de données est une variable d'une entrée dans ma barre latérale:Brillant avec flexdashboard, dataframe comme variables

Inputs {.sidebar} 
----------------------------------------------------------------------- 

```{r} 
selectInput("df", label = h3("Select df"), choices = list("january" = "df1", "february" = "df2")) 
``` 

je puis tracer et afficher mon dataframe l'intérieur d'un tabset:

Row {.tabset} 
----------------------------------------------------------------------- 

### Plot 
```{r} 
renderPlot({ 
plot(fread(paste("/Users/woshitom/Desktop/shiny/",input$df,".csv",sep="")),type="o", col="blue") 
}) 
``` 

### Data 
```{r} 
renderTable(fread(paste("/Users/woshitom/Desktop/shiny/",input$df,".csv",sep=""))) 
``` 

Comme vous pouvez le voir, je suis chargement 2 fois mon csv:

fread(paste("/Users/woshitom/Desktop/shiny/",input$df,".csv",sep="")) 

Au lieu de cela, je voudrais stocker dans une variable:

my_df <- fread(paste("/Users/woshitom/Desktop/shiny/",input$df,".csv",sep="")) 

Mais quand je le fais, je reçois l'erreur suivante:

Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.) 

Toute idée comment je dois stocker ce dataframe?

+1

essayer avec 'my_df <- réactive ({fread (pâte ("/ Users/woshitom/bureau/brillant /", entrée $ df " csv", sep = ""))}) ' –

+0

merci! fonctionne bien, s'il vous plaît soumettre votre réponse, je vais le valider – woshitom

Répondre

1

Les entrées brillantes doivent être utilisées à l'intérieur des fonctions de rendu, des observateurs ou des réactifs. C'est pourquoi vous obtenez l'erreur. Dans votre cas, puisque vous voulez stocker le résultat dans une variable, la façon de procéder est de créer une variable réactive avec reactive(). Ceci est le soltution:

my_df <- reactive({fread(paste("/Users/woshitom/Desktop/shiny/",input‌​$df,".csv",sep=""))}‌​) 
+0

Merci de le souligner. Réponse éditée –