如何在switch语句中使用变量?

时间:2015-09-29 14:36:00

标签: shiny rstudio

我需要在dataSource1dataSource2dataSource3内调用大约50个文件。而不是将它全部复制到每个switch语句中,如何使用变量,所以我只需要在代码顶部输入一次?我在server.R内为一个闪亮的应用程序调用它。

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
                   )
        )

1 个答案:

答案 0 :(得分:3)

您可以使用将返回命名对象值的get函数。假设input$dataSelection1具有变量的完整名称,您的反应函数可能是这样的:

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

它将返回与名称匹配的变量的内容。

如果input$dataSelection1只包含一个数字,您可以使用paste0sprintf函数来构建变量的名称:

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

我希望它可以帮到你。