我正在尝试使用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)), ]
但是都没有给我想要的输出... 有任何想法吗 ? 预先感谢
答案 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)
})