Ich habe eine glänzende App wie unten dargestellt:Wie werden mehrere Spalten in R Shiny basierend auf Dropdown-Eingaben dynamisch umbenannt?
require(shiny)
require(dplyr)
server <- function(input, output) {
dataa <- reactive({
table1 <- mtcars
return(table1)
})
output$contents <- renderDataTable({
dataa()
})
output$mpg <- renderUI({
selectizeInput(
'MPG', 'MPG: ', choices = c("",as.list(colnames(dataa()))),
options = list(
placeholder = 'Please select',
onInitialize = I('function() { this.setValue(""); }')
)
)
})
output$cyl <- renderUI({
selectizeInput(
'CYL', 'CYL: ', choices = c("",as.list(colnames(dataa()))),
options = list(
placeholder = 'Please select',
onInitialize = I('function() { this.setValue(""); }')
)
)
})
DataRename <- reactive({
Data <- dataa()
DataNew1<-Data
MPG <- input$MPG
CYL <- input$CYL
if(!is.null(MPG)){
StatRenameEmp1 <- paste0("DataNew1 <- dplyr::rename(DataNew1,Mileage=",MPG,")")
eval(parse(text=StatRenameEmp1))
} else{
DataNew1<-Data
}
if(!is.null(CYL)){
StatRenameEmp1 <- paste0("DataNew1 <- dplyr::rename(DataNew1,Cylinders=",CYL,")")
eval(parse(text=StatRenameEmp1))
}else{
DataNew1<-Data
}
return(DataNew1)
})
output$rename <- renderDataTable({
DataRename()
})
}
ui <- shinyUI({
navbarPage("Dynamic Rename",
tabPanel("Data",
fluidPage(
titlePanel("mtcars"),
dataTableOutput('contents'))
),
tabPanel("Variables",
fluidPage(
sidebarLayout(
sidebarPanel(
uiOutput("mpg"),
uiOutput("cyl")
),
mainPanel(
dataTableOutput("rename")
)
)
)
)
)
})
shinyApp(ui = ui, server = server)
Das Ziel ist es, die Spalten des Datenrahmen (mtcars), wo ich einige Standard-Namen zu den endgültigen Daten und der Benutzer der Auswahl sollte gegeben umbenennen entsprechende Variable aus dem Eingabe-Dataset. ZB. Ich möchte eine bestimmte vom Benutzer ausgewählte Spalte (mpg
in diesem Fall) als "Kilometerstand", cyl
zu "Zylinder" usw. umbenennen.
Mein Problem ist, dass ich mehrere Spalten auf einmal nicht umbenennen kann. Nur die erste Spalte wird umbenannt, nicht die verbleibende.
Zweitens kann ich keine Spalte auswählen, in diesem Fall der Spaltenname nicht geändert werden muss, das heißt, wenn MPG dann nicht gewählt wird, sollte es als mpg
bleiben Wie kann ich alle bekommen die Spalten umbenannt nach zu einem von mir festgelegten Namen, basierend auf den Benutzereingaben?
Die Umbenennung funktioniert gut, wenn ich alle Dropdowns auswähle.