2017-01-18 3 views
2

Beim Versuch, eine Reihe von InfoBoxen für ein Shiny Projekt zu erstellen, bin ich auf eine Schleife gestoßen, die, obwohl ich endlos versucht habe, zu lösen, in mir endet Code so oft wie InfoBoxes, die ich brauche, das ist unglaublich. Mein ursprüngliches Stück Code ist so etwas wie diesSchleife über die Namensliste in einem ShinyApps Server.R

output$**name** <- renderValueBox({ 
    InformacionIE2 <- InformacionIE2.df[ which(InformacionIE2.df$INSTITUCIONEDUCATIVA==input$input_typen),] 
    if (InformacionIE2$**name** =="Si") { 
    infoBox("Planos Electricos", 
      color = "green", 
      icon = icon("thumbs-up", lib = "glyphicon"), 
      print (InformacionIE2$**name**) 
    ) 
    } else { 
    infoBox("**name** ", 
      color = "red", 
      icon = icon("thumbs-down", lib = "glyphicon"), 
      print (InformacionIE2$**name**) 
    )   
    } 
}) 

Was ich brauche, ist eine Möglichkeit für name1 zu finden, name2, name3, ..., nameN in der exakt gleichen Chunk anstelle von Namen iterieren von Code ohne zu kopieren, wie namy Zeiten wie Namen dort sind. Ich habe versucht, dies mit einer einfachen Schleife über eine Liste zu tun, aber bekomme einen Fehler zurück, der mir sagt, dass ein Syntaxfehler nahe dem unerwarteten Token ist.

Wie könnte das gelöst werden?

+0

Zugriff outout über $ string wird nicht funktionieren. Probieren Sie stattdessen [["name"]] aus, wie bei InformacionIE2. Wenn das nicht hilft, wäre eine reproduzierbare App hilfreich. – BigDataScientist

Antwort

1

Verwenden Sie lapply statt einer for-Schleife und es sollte funktionieren. Keine Ahnung warum:

lapply(**names**, function(name) { 
output[[name]] <- <- renderValueBox({ 
    InformacionIE2 <- InformacionIE2.df[ which(InformacionIE2.df$INSTITUCIONEDUCATIVA==input$input_typen),] 
    if (InformacionIE2[[name]] =="Si") { 
    infoBox("Planos Electricos", 
      color = "green", 
      icon = icon("thumbs-up", lib = "glyphicon"), 
      print (InformacionIE2[[name]]) 
    ) 
    } else { 
    infoBox(name, 
      color = "red", 
      icon = icon("thumbs-down", lib = "glyphicon"), 
      print (InformacionIE2[[name]]) 
    )   
    } 
}) 
}) 
Verwandte Themen