闪亮:根据 selectInput 选择动态分配 var 名称
Shiny: assign var names dynamically based on selectInput selection
我正在尝试使用 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)), ]
但都没有给我想要的输出...
有任何想法吗 ?
提前致谢
你的意思是这样的吗? :
df <- reactive({
df <- mtcars[, list(var_name=get(input$var)), ]
colnames(df) <- input$var
df
})
显然您也可以将 colname 编辑为其他名称
您可以在子集化后重新分配列名:
df <- reactive({
df <- mtcars[, list(var_name=get(input$var)), ]
colnames(df) <- input$var
return(df)
})
我正在尝试使用 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)), ]
但都没有给我想要的输出... 有任何想法吗 ? 提前致谢
你的意思是这样的吗? :
df <- reactive({
df <- mtcars[, list(var_name=get(input$var)), ]
colnames(df) <- input$var
df
})
显然您也可以将 colname 编辑为其他名称
您可以在子集化后重新分配列名:
df <- reactive({
df <- mtcars[, list(var_name=get(input$var)), ]
colnames(df) <- input$var
return(df)
})