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