闪亮:基于selectInput选择动态分配var名称

时间:2018-11-02 16:07:40

标签: r shiny data.table selectinput

我正在尝试使用selectInput将data.table子集到所选列,并保留其名称。到目前为止,我已经完成了:

library(data.table)
mtcars <- data.table(mtcars)

ui <- bootstrapPage(
  uiOutput('variables'),
  tableOutput('table')
)

server <- function(input, output) {
  output$variables<- renderUI ({
    selectInput('var', 
                label = 'select Vars:', 
                choices = as.list(colnames(mtcars)),
                multiple = F)
  })


  df <- reactive({
    df <- mtcars[, list(var_name=get(input$var)), ]
  })

  output$table <- renderTable({head(df())})

}

shinyApp(ui = ui, server = server)

,输出为

enter image description here

但是我真正想要的是列名与原始df中的列名相同。 我尝试过没有成功的选项,例如:

    df <- mtcars[, list(input$var), ]
    df <- mtcars[, list(paste0(input$var)=get(input$var)), ]

但是都没有给我想要的输出... 有任何想法吗 ? 预先感谢

2 个答案:

答案 0 :(得分:0)

您的意思是这样的吗? :

df <- reactive({
    df <- mtcars[, list(var_name=get(input$var)), ]
    colnames(df) <- input$var
    df
})

很显然,您还可以将名称修改为其他名称

答案 1 :(得分:0)

您可以在分配子集后重新分配列名:

  df <- reactive({
    df <- mtcars[, list(var_name=get(input$var)), ]
    colnames(df) <- input$var
    return(df)
  })