如何在R闪亮字符串中插入新行

时间:2014-10-14 18:53:07

标签: r shiny

闪亮的,我有以下几点:

  output$sequenceText <- renderText({
    showSequence()
  })

showSequence <- reactive({
  selectedSeqs <- as.numeric(input$sequenceSelect)
  resultString <- ""
  currentString <-""

  for(i in selectedSeqs){
    currentString <- paste(i, toString(myProts[i]), sep = ":")
    resultString <- paste(resultString, currentString, sep = "\n")
  }
  return(resultString)

})

但是,新行字符似乎不受尊重。我该如何解决这个问题?

谢谢!

5 个答案:

答案 0 :(得分:37)

据我所知,只有两个选项可以在闪亮中显示多条线。使用verbatimTextOutput的一种方法是在文本周围提供灰色框(个人偏好)。另一种方法是使用renderUIhtmlOutput来使用原始html。以下是演示结果的基本工作示例。

require(shiny)
runApp(
  list(
    ui = pageWithSidebar(
      headerPanel("multi-line test"),
      sidebarPanel(
        p("Demo Page.")
      ),
      mainPanel(
        verbatimTextOutput("text"),
        htmlOutput("text2")
      )
    ),
    server = function(input, output){

      output$text <- renderText({
        paste("hello", "world", sep="\n")
      })

      output$text2 <- renderUI({
        HTML(paste("hello", "world", sep="<br/>"))
      })

    }
  )
)

这产生了下图:

enter image description here

答案 1 :(得分:1)

怎么样

  output$text2 <- renderUI({
    HTML('hello <br> world')
  })

答案 2 :(得分:1)

还有一个write(x, file = "")技巧:

renderPrint({
 write(showSequence(), file = "")
})

如果输出为verbatimTextOutput,则此方法有效。

答案 3 :(得分:0)

这是另一种方法,可能会更简单。

ui <- fluidPage(

  htmlOutput("text")
)

server <- function(input, output) {

  output$text <- renderText({

    paste0("<p>", letters[1:10], "</p>")
  })
}

# Run the application 
shinyApp(ui = ui, server = server)

答案 4 :(得分:0)

对于阅读本文的任何人,您可能还希望使用tags $ br(),只需将其作为参数插入一段文本后即可。例如,

tags$div(
    "a piece of text", tags$br(),
    "this will start from the new line now", tags$br(),
    "and this as well",
    "but not this" )