2015-09-29 2 views
1

У меня около 50 файлов, которые мне нужно позвонить в пределах dataSource1, dataSource2 и dataSource3. Вместо того, чтобы копировать все в каждый оператор switch, как я могу использовать переменные, поэтому мне нужно только ввести его один раз в верхней части кода? Я звоню в server.R для блестящего приложения.Как использовать переменные в инструкции switch?

dataSource1 <- reactive({ 
     switch(input$dataSelection1, 
       "File1" = File1, 
       "File2" = File2, 
       "File3" = File3, 
       "File50" = File50 
) 
     ) 

Вместо этого, я хотел бы иметь:

dataSource1 <- reactive({ 
      switch(input$dataSelection1, 
        FileNumber = File 
        ) 
     ) 
dataSource2 <- reactive({ 
      switch(input$dataSelection1, 
        FileNumber = File 
        ) 
     ) 
dataSource2 <- reactive({ 
      switch(input$dataSelection1, 
        FileNumber = File 
        ) 
     ) 

ответ

3

Вы можете использовать функцию get, которая будет возвращать значение именованного объекта. Если предположить, что input$dataSelection1 имеет полное имя переменной, ваша реактивная функция может быть что-то вроде этого:

dataSource1 <- reactive({ 
      get(input$dataSelection1) 
     ) 

Она возвращает содержимое переменной, которые соответствуют имя.

input$dataSelection1 Если содержит только номер, вы можете использовать paste0 или sprintf функции для построения имени переменной:

get(paste0('File',input$dataSelection1)) # it will create File1, File2... 
sprintf('File%04d',input$dataSelection1) # add zeros before the number File0001 

Я надеюсь, что это может помочь вам.

+0

Спасибо за ответ, Geovany. У меня есть еще один вопрос для вас. Я приложил его к исходному вопросу. Спасибо за вашу помощь! – Gary

Смежные вопросы