Я хочу иметь возможность отображать динамический вектор в виде текстового вывода в моем приложении Shiny. Я также хочу использовать HTML (жирный шрифт, цвет шрифта и т. Д.), Поэтому я использую htmlOutput
и renderUI
вместо textOutput
и renderText
за this suggestion.Использование renderUI в Shiny для отображения векторов
Вот несколько примеров кода:
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
Результат этого кода:
Вот ваши штаты: Alabama Вот ваши штаты: Аляска Вот ваши штаты: Arizona Ваши контактные данные: Arkansas
Что я хочу:
Вот ваши штаты: Алабама Аляска Аризона Арканзас
я пришел к решению, используя условные выражения, но это довольно неуклюжим. Вот что я положил в renderUI
для выше требуемого выхода:
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)
Опять же, выше решение работает, но это довольно неуклюжее и будет очень неэффективны для больших векторов (с, скажем, 10+ элементы). Есть ли более простой способ отображения этих векторов, хотя он все еще может использовать HTML?
Да, это делает трюк! Удивительно, как многие простые вещи теряются в миксе, когда вы самоучка. Благодаря! – Lauren