在renderTable中选择不同的列

时间:2018-02-14 13:08:46

标签: r shiny

每次用户更改年份时,我都会更新一个数据框,让我们称之为mydata。

在输出中,我希望有一个表格可以选择要显示的列,但我喜欢"选择"参数(在checkboxGroupInput中)根据年份不同。

我当前代码的一小部分:

Ui:

sliderInput("year","Choose the year",min=2013,max=2018,value=2017,step=1,sep=""),
conditionalPanel(condition="input.year==2013",
             checkboxGroupInput("show_vars13", "Choose variables to show:",colnames13, 
                                 selected=c(var1,var2))
),
conditionalPanel(condition = "input.year==2014",
             checkboxGroupInput("show_vars14","Choose variables to show:",colnames14,
                                selected=c(c(var1,var2))
),
conditionalPanel(condition="input.year==2015",
             checkboxGroupInput("show_vars15","Choose variables to show:",colnames15,
                                selected=c(var1,var2))
),
conditionalPanel(condition="input.year==2016",
             checkboxGroupInput("show_vars16","Choose variables to show:",colnames16,
                                selected=c(var1,var2))
),
conditionalPanel(condition="input.year==2017",
             checkboxGroupInput("show_vars17","Choose variables to show:",colnames17,
                                selected=c(var1,var2))
),

tableOutput("data")

服务器:

output$data <- renderTable({

  year <- as.numeric(substr(input$year,3,4))

  for (i in 13:17){
    if (year==i){
      show_vars <- get(paste("input$show_vars",i,sep=''))
  }
}

  return(mydata[, show_vars, drop = FALSE])
})

此代码不起作用。 R Shiny返回&#34;对象&#39;输入$ show_vars17&#39;找不到&#34;

2 个答案:

答案 0 :(得分:1)

尝试

show_vars <-input[[paste0("show_vars",i)]]

答案 1 :(得分:0)

show_vars <- get(paste("input$show_vars",i,sep=''))

"input$show_vars"只是一个字符串..

如果你想引用变量,删除引号,并写:

show_vars <- get(paste(input$show_vars,i,sep=''))