2017-11-06 1 views
0

Ich habe einen Bericht mit einem Shiny-Frontend erstellt, der einige Makros verwendet, um die Bevölkerung über meinen Final Table zu informieren.Dynamische Änderung des Namens der Spalte R basierend auf der Eingabevariablen

Beispiel: Der Benutzer wählt die Metrik "Umsatz" aus der Dropdown-Liste aus, die den numerischen Wert aus der Variablen "total_revenue" gemäß der nachstehenden IF-Anweisung abruft.

if(metric == 'Revenue') {  
    report_metric <- 'total_revenue' 

    } else if (metric == 'Sales'){ 
    thing_name <- 'total_sales' 

    } else if (metric == 'Refunds'){ 
    thing_name <- 'total_refunds' 

    } else if (metric == 'Cancellations'){ 
    thing_name <- 'total_cancellations' 

    }else { 


    } 

Der Bericht selbst funktioniert gut und Endergebnis sieht etwas wie das unten, aber was würde ich wirklich tun möchte, ist der Name col4 haben dynamisch entsprechend der Metrik Wahl geändert werden, in diesem Fall ‚Einnahmen‘

| date | store_number |  manager  | report_metric | 
|2017-01-01 |  0286  | john appleseed |  2,309  | 
|2017-01-01 |  0761  | jane doe  |  1,712  | 

Ist dies möglich und wenn ja, was ist der beste Weg, dies zu erreichen?

+2

Bitte versuchen Sie, ein Beispiel [reproducable] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) mit Beispiel-Eingabedaten und etwas Code, den wir ausführen können, einzuschließen mit testen. Dies scheint im besten Fall unvollständig zu sein. Was genau hast du bisher probiert und wo genau bist du stecken geblieben? – MrFlick

+0

Vielleicht möchten Sie in Shiny in "reaktive" Ausdrücke suchen – useR

Antwort

0

Hallo können Sie den Namen einer Spalte mit

die Variable sein
names(dataframe)[4] <- metric 

mit Datenrahmen ändern, die Sie data.table

0
enthält

Hier kleines Beispiel von dem, was Sie vielleicht:

library(shiny) 
library(DT) 

values <- c("Revenue","Sales","Refunds","Cancellations") 
names <- c("total_revenue","total_sales","total_refunds","total_cancellations") 

df <- mtcars[,1:4] 

ui <- fluidPage(
    selectInput("metric","metric",values), 
    dataTableOutput("Table") 
) 

server <- function(input, output, session) { 

    mydf <- reactive({ 
    name <- switch(input$metric, 
        "Revenue" = "total_revenue", 
        "Sales" = "total_sales", 
        "Refunds" = "total_refunds", 
        "Cancellations" = "total_cancellations") 
    names(df)[4] <- name 
    df 
    }) 
    output$Table <- renderDataTable({mydf()}) 
} 

shinyApp(ui,server) 
Verwandte Themen