1つのrenderText()
コマンドを使用して複数行のテキストを出力したい。ただし、これは不可能のようです。たとえば、 shiny tutorial のserver.R
のコードは切り捨てられています。
shinyServer(
function(input, output) {
output$text1 <- renderText({paste("You have selected", input$var)
output$text2 <- renderText({paste("You have chosen a range that goes from",
input$range[1], "to", input$range[2])})
}
)
ui.R
のコード:
shinyUI(pageWithSidebar(
mainPanel(textOutput("text1"),
textOutput("text2"))
))
基本的に2行を出力します:
You have selected example
You have chosen a range that goes from example range.
2行output$text1
とoutput$text2
を1つのコードブロックに結合することは可能ですか?これまでの私の努力は失敗しました。
output$text = renderText({paste("You have selected ", input$var, "\n", "You have chosen a range that goes from", input$range[1], "to", input$range[2])})
誰にもアイデアはありますか?
renderUI
とhtmlOutput
の代わりにrenderText
とtextOutput
を使用できます。
require(shiny)
runApp(list(ui = pageWithSidebar(
headerPanel("censusVis"),
sidebarPanel(
helpText("Create demographic maps with
information from the 2010 US Census."),
selectInput("var",
label = "Choose a variable to display",
choices = c("Percent White", "Percent Black",
"Percent Hispanic", "Percent Asian"),
selected = "Percent White"),
sliderInput("range",
label = "Range of interest:",
min = 0, max = 100, value = c(0, 100))
),
mainPanel(textOutput("text1"),
textOutput("text2"),
htmlOutput("text")
)
),
server = function(input, output) {
output$text1 <- renderText({paste("You have selected", input$var)})
output$text2 <- renderText({paste("You have chosen a range that goes from",
input$range[1], "to", input$range[2])})
output$text <- renderUI({
str1 <- paste("You have selected", input$var)
str2 <- paste("You have chosen a range that goes from",
input$range[1], "to", input$range[2])
HTML(paste(str1, str2, sep = '<br/>'))
})
}
)
)
<br/>
を改行として使用する必要があることに注意してください。また、表示するテキストはHTMLエスケープする必要があるため、HTML
関数を使用します。
Joe Cheng :によると
ええと、
renderUI
とhtmlOutput
の使用はお勧めしません[他の回答で説明されている方法で]。基本的にテキストであるテキストを使用し、エスケープせずにHTMLに強制します(テキストにたまたま特殊なHTML文字を含む文字列が含まれていると、正しく解析されない可能性があります)。代わりにこれはどうですか:
textOutput("foo"),
tags$style(type="text/css", "#foo {white-space: pre-wrap;}")
(#fooのfooをtextOutputのIDに置き換えます)