Shiny:根据 selectInput 选择动态分配 var 名称
Posted
技术标签:
【中文标题】Shiny:根据 selectInput 选择动态分配 var 名称【英文标题】:Shiny: assign var names dynamically based on selectInput selection 【发布时间】:2019-04-06 21:48:37 【问题描述】:我正在尝试使用 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)), ]
但都没有给我想要的输出...... 有任何想法吗 ? 提前致谢
【问题讨论】:
【参考方案1】:你的意思是这样的吗? :
df <- reactive(
df <- mtcars[, list(var_name=get(input$var)), ]
colnames(df) <- input$var
df
)
显然,您也可以将 colname 编辑为其他内容
【讨论】:
我以前尝试使用 colnames(df) 如果你没有明确的return()
调用,那么函数将输出最后一个计算表达式的值。因此,没有最终 df
的方法应该只返回 input$var
的值。请参阅here 以获得简要说明,here 讨论是否明确调用return(df)
或仅调用df
【参考方案2】:
您可以在子集后重新分配列名:
df <- reactive(
df <- mtcars[, list(var_name=get(input$var)), ]
colnames(df) <- input$var
return(df)
)
【讨论】:
以上是关于Shiny:根据 selectInput 选择动态分配 var 名称的主要内容,如果未能解决你的问题,请参考以下文章
根据 R Shiny 中的其他选择动态更新两个 selectInput 框
如何根据Shiny中的selectInput显示不同的图像?
使用基于 selectInput 的动态参数将绘图从 rmarkdown 复制到 Shiny 的问题
如何在 RMarkdown 中使用 Shiny 进行嵌套选择 selectInput()?