2017-10-21 11 views
0

Je voudrais passer un nombre dans Shiny, puis l'utiliser comme partie d'un nom de variable qui détermine quelle variable est utilisée dans la sortie.Numéro de passe dans le nom de la variable dans Shiny

Dans un exemple simple avec une trame de données (df) qui a deux variables var1 et var2, je voudrais permettre à l'utilisateur de sélectionner 1 ou 2, et l'utiliser pour faire référence à var1 ou var2. (Dans ma situation réelle ce sont des années et la sortie est une carte.) Je dirais quelque chose comme ceci:

library(shiny) 

var1=c(1,2,3,4) 
var2=c(2,4,6,8) 
df=data.frame(var1, var2) 

ui<-fluidPage(
    sliderInput(inputId = "year", 
    label = "Choose a variable", 
    value = 2, min = 1, max = 3), 
    plotOutput("yr") 
) 
server<- function(input, output) { 
    output$yr <- renderPlot({ 
    title <- "hist of var 1 or 2" 
    hist(df$var(input$year)????, main = title) 
    }) 
} 
shinyApp(ui = ui, server = server) 

La ligne avec le ???? est le problème évident.

+0

Pouvez-vous utiliser 'df [[paste0 ("var", entrée année $)]]'? – r2evans

+0

'hist (df [[paste0 (" var ", entrée $ année]]))' ne semble pas fonctionner, ni avec $ avant var ou entre guillemets autour de l'entrée $ year. –

Répondre

0

trouvé quelque chose qui fonctionne:

hist(unlist(df[paste0("var", input$year)]))