una - Salida de múltiples líneas de texto con renderText() en R brillante
para que un campo tipo checkbox aparezca marcado por defecto utilizamos el atributo: (3)
Puede usar renderUI
y htmlOutput
lugar de renderText
y 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/>''))
})
}
)
)
Tenga en cuenta que necesita utilizar <br/>
como un salto de línea. Además, el texto que desea mostrar debe ser HTML escapado, así que use la función HTML
.
Quiero generar varias líneas de texto con un renderText()
. Sin embargo, esto no parece posible. Por ejemplo, del brillante tutorial hemos truncado el código en 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])})
}
)
y codigo en ui.R
:
shinyUI(pageWithSidebar(
mainPanel(textOutput("text1"),
textOutput("text2"))
))
que esencialmente imprime dos líneas:
You have selected example
You have chosen a range that goes from example range.
¿Es posible combinar las dos líneas de output$text1
y de output$text2
en un bloque de código? Mis esfuerzos hasta ahora han fracasado, por ejemplo.
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])})
¿Alguien tiene alguna idea?
Según Joe Cheng :
Uhhh no recomiendo usar
renderUI
yhtmlOutput
[de la manera que se explica en la otra respuesta]. Está tomando texto que es fundamentalmente texto, y está forzando a HTML sin escapar (lo que significa que si el texto incluye una cadena que contiene caracteres HTML especiales, podría analizarse incorrectamente).¿Qué tal esto en su lugar?
textOutput("foo"),
tags$style(type="text/css", "#foo {white-space: pre-wrap;}")
(Reemplace el foo en #foo con el ID de su salida de texto)
Si quieres decir que no te importa el salto de línea:
output$text = renderText({
paste("You have selected ", input$var, ". You have chosen a range that goes
from", input$range[1], "to", input$range[2], ".")
})