utilizamos una través tipo texto sistema que pueden por para nombre múltiples marcado líneas formulario etiqueta escribir emplea elemento dominio dirección definir defecto cuadro convierte control campo atributo aparezca r shiny

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 y htmlOutput [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], ".") })