Ich habe einige Daten darunter, die ich verwende, um ein Donut-Diagramm in R glänzend zu erstellen, wobei date
ein Zeichen ist. Ich möchte die E-Mail auswählen können, deren Bewertung ich anzeigen möchte, aber dann in der zweiten Dropdown-Auswahl nur die Daten sehen, für die diese E-Mail aktiv ist.R Shiny selectInput, das von einem anderen selectInput abhängig ist
Zum Beispiel, wenn ich im ersten Dropdown email = xxxx wähle, möchte ich nur 'keine Aktivität' im Datumsauswahlfeld sehen. Und für email = yyyy möchte ich nur 6/17/14, 6/18/14, 6/19/14 als Auswahl sehen.
Ich habe eine Art verschachtelte Teilmenge in der UI versucht. Beispiel:
> ui <- shinyUI(fluidPage(
+ sidebarLayout(
+ sidebarPanel(
+ selectInput('Select', 'Customer:', choices = unique(as.character(dat5$email))),
+ selectInput("User", "Date:", choices = dat5[dat5$email==input$Select,date])
+ ),
+ mainPanel(plotOutput("distPlot"))
+ )
+))
Aber dies zeigt noch alle möglichen Datumsauswahl
DATA
email date variable value ymin ymax
xxxx no activity e_score 0 0 0
xxxx no activity diff 1 0 1
yyyy 6/17/14 e_score 0.7472 0 0.7472
yyyy 6/17/14 diff 0.2528 0.7472 1
yyyy 6/18/14 e_score 0.373 0 0.373
yyyy 6/18/14 diff 0.627 0.373 1
yyyy 6/19/14 e_score 0.533 0 0.533
yyyy 6/19/14 diff 0.467 0.533 1
Mein Code so weit:
app.R
library(shiny)
library(shinydashboard)
ui <- shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
selectInput('Select', 'Customer:', choices = unique(as.character(dat5$email))),
selectInput("User", "Date:", choices = unique(dat5$date))
),
mainPanel(plotOutput("distPlot"))
)
))
server <- function(input, output) {
output$distPlot <- renderPlot({
ggplot(data = subset(dat5, (email %in% input$Select & date %in% input$User)), aes(fill=variable, ymax = ymax, ymin = ymin, xmax = 4, xmin = 3)) +
geom_rect(colour = "grey30", show_guide = F) +
coord_polar(theta = "y") +
geom_text(aes(x = 0, y = 0,label = round(value[1]*100))) +
xlim(c(0, 4)) +
theme_bw() +
theme(panel.grid=element_blank()) +
theme(axis.text=element_blank()) +
theme(axis.ticks=element_blank()) +
xlab("") +
ylab("") +
scale_fill_manual(values=c('#33FF00','#CCCCCC'))
})
}
shinyApp(ui = ui, server = server)
, sie habe !! Aus irgendeinem Grund musste ich 'choices = as.character (dat5 [dat5 $ email == input $ Select," date "])' ohne die Anführungszeichen um das Datum. Sonst hat super geklappt! – Hillary
Ich bin verwirrt von der Antwort-Anweisung "Sie können nicht auf Eingaben in der ui.R Teil der App zugreifen". Wenn Sie das bedingte Feld verwenden, definieren Sie die Bedingung basierend auf input.panel. Ist das nicht abhängig von einer Eingabe der Benutzeroberfläche? –