Ich möchte einen dynamischen Vektor als Textausgabe in meiner Shiny App anzeigen können. Ich möchte auch HTML (fett, Schriftfarben usw.) verwenden, also verwende ich htmlOutput
und renderUI
anstelle von textOutput
und renderText
pro this suggestion. HierVerwenden von renderUI in Shiny zum Anzeigen von Vektoren
ist einige Beispiel-Code:
library(shiny)
shinyApp(
ui <- htmlOutput("example"),
server <- function(input, output, session){
# vector (in the real app, this is not a static vector--it will be updated with other inputs)
states <- c("Alabama", "Alaska", "Arizona", "Arkansas")
# text output
output$example <- renderUI({
x <- paste0("<strong>Here are your states</strong>: ", states)
HTML(x)
}) #END RENDERUI
} #END SERVER
) #END SHINYAPP
Das Ergebnis dieses Codes ist:
Hier sind Ihre Zustände: Alabama Hier sind Ihre Staaten: Alaska Hier sind Ihre Staaten: Arizona Hier sind Ihre Staaten: Arkansas
Was ich will, ist:
Hier Ihre Zustände sind: Alabama Alaska Arizona Arkansas
Ich habe mit einer Lösung unter Verwendung von bedingten Anweisungen kommen, aber es ist ziemlich klobig. Hier ist, was ich in renderUI
für die oben gewünschten Ausgang setzen:
x <- paste0("<strong>Here are your states: </strong>",
if(!is.na(states[1])){states[1]},
if(!is.na(states[2])){states[2]},
if(!is.na(states[3])){states[3]},
if(!is.na(states[4])){states[4]})
HTML(x)
Auch die obige Lösung funktioniert, aber es ist ziemlich klobig und wird schrecklich ineffizient für größere Vektoren (mit, sagen wir mal, 10 + Elemente). Gibt es eine einfachere Möglichkeit, diese Vektoren anzuzeigen und dennoch HTML zu verwenden?
Ja, das macht den Trick! Es ist erstaunlich, wie viele einfache Dinge in der Mischung verloren gehen, wenn man sich selbst beibringt. Vielen Dank! – Lauren