本日はShiny
のUIに配置したBOXの中にベクトルの要素を縦に一つずつ並べて出力する方法についてです。
プルダウンリストなどでは自動でやってくれるし、表形式で表示すればすむので普段それほど必要ではないだけに
いざとなったときに「あれ?」となりがちです。
こんな感じです
お詳しい方には当然の話題かもしれませんがチョットもたついたのでメモ的にUPします。
横書き出力
まずは以下のサンプルコードをごらんください。
ベクトルの要素を書き出すためにはまず文字列にしなければならないので、17行目のように
paste(ベクトル, collapse = " ")
とすれば要素間をスペース区切りにした文字列が得られますので、
これを描画すればOKです。シンプルですね。
library(shiny) candList = c("apple", "orange", "pear", "grape") ui <- fluidPage( fluidRow( br(), column(style="border: 1px solid black; margin-left: 10px;", width=4, uiOutput("listOut", style = "font-size: 20px; min-height:150px;") ) ) ) server <- function(input, output) { # holizontally output$listOut = renderUI({ paste(candList, collapse = " ") }) } shinyApp(ui, server)
こんな感じで出てきます
縦書き出力
次に本日の本題ですが、冒頭の図のようにベクトルを要素ごとに縦に出力するには改行を加えておく必要がありますので、
collapse = " "
の代わりにcollapse = "<br>"
とすれば改行タグが入るので、
続いてこれをHTML( )として書き出せばOKです。
念のため確認しておくと、公式マニュアルでも記載がありますが、
renderUI
はHTML
をその中で扱うことができるので、<br>
を認識してくれるということかと思います。
server <- function(input, output) { # vertically output$listOut = renderUI({ x = paste(candList, collapse = "<br>") HTML(x) }) }
以上考えれば当たり前ですが、考えるよりまず調べる検索派のかたはご参考ください。