web-dev-qa-db-ja.com

R光沢のある文字列に新しい行を挿入する方法

光沢のある、次のものがあります。

  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)

})

ただし、改行文字が尊重されるようには見えません。どうすれば修正できますか?

ありがとう!

23
user1357015

私の知る限り、光沢のある範囲内で複数の行を表示するオプションは2つしかありません。 verbatimTextOutputを使用する1つの方法は、テキストの周りに灰色のボックスを提供します(個人設定)。もう1つは、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

40
cdeterman

どう?

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

これを読んでいる人には、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" )
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)
0
Chris Beeley