1

我正在尝试使用 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)

输出是

在此处输入图像描述

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

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

但都没有给我想要的输出......有什么想法吗?提前致谢

4

2 回答 2

0

你的意思是这样的吗?:

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

显然,您也可以将 colname 编辑为其他内容

于 2018-11-02T16:11:41.640 回答
0

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

  df <- reactive({
    df <- mtcars[, list(var_name=get(input$var)), ]
    colnames(df) <- input$var
    return(df)
  })
于 2018-11-02T16:11:58.223 回答