Shiny: назначать имена переменных динамически на основе выбора selectInput - PullRequest
0 голосов
/ 02 ноября 2018

Я использую 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 голосов
/ 02 ноября 2018

Вы можете переназначить имя столбца после подмножества:

  df <- reactive({
    df <- mtcars[, list(var_name=get(input$var)), ]
    colnames(df) <- input$var
    return(df)
  })
0 голосов
/ 02 ноября 2018

Вы имеете в виду что-то подобное? :

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

Очевидно, что вы можете затем отредактировать colname на что-то еще

...