Home > database >  Change column name in R shiny
Change column name in R shiny

Time:03-02

I have problem with change name of column in dataset df1(). I prepare selectInput (column name to rename) and textInput (target column name). But my version doesn't work (code below). Better said, it works, but only with "static" new colname, when i use textInput it thorws me an error unexpected '='. Can somebody help me ?

SERVER:
  output$to_rename<- renderUI({
    choice <- names(df1())
    selectInput('to_rename', label = 'Choose column to rename: ', choices = choice)
  })
  
  output$target_rename<- renderUI({
    textInput('target_rename', label = 'Write new column name: ', value = "Your_new_colname")
  })
  
  observeEvent(input$ren_col, {
    df1(df1() %>% rename(
      input$target_rename = input$to_rename   #when I use: new_name = input$to_rename it works 
#and selected column will be rename to "new_name"
    ))
  })

##############################################################################

UI:
uiOutput("to_rename"),
uiOutput("target_rename"),
actionButton("ren_col", "Rename"),

CodePudding user response:

You can use !! for programmatic access to variable names.

Reprex:

## mimic shiny's `input$` variable:
input <- list(oldname="cyl", newname="newcyl")
head(mtcars) %>%
  rename(!!input$newname := !!input$oldname)
#                    mpg newcyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0      6  160 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0      6  160 110 3.90 2.875 17.02  0  1    4    4
# Datsun 710        22.8      4  108  93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive    21.4      6  258 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7      8  360 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1      6  225 105 2.76 3.460 20.22  1  0    3    1
  • Related