如何在 R 闪亮的字符串中插入新行
Posted
技术标签:
【中文标题】如何在 R 闪亮的字符串中插入新行【英文标题】:how to insert new line in R shiny string 【发布时间】:2014-12-09 16:23:07 【问题描述】:在闪亮中,我有以下几点:
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)
)
但是,似乎不尊重换行符。我该如何解决?
谢谢!
【问题讨论】:
Outputting multiple lines of text with renderText() in R shiny的可能重复verbatimTextOutput()
和 renderText()
将尊重 \n
字符。
【参考方案1】:
据我所知,只有两个选项可以在闪亮中显示多行。使用verbatimTextOutput
的一种方法,它将在您的文本周围提供一个灰色框(个人偏好)。另一种是使用renderUI
和htmlOutput
来使用原始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/>"))
)
)
)
这会产生下图:
【讨论】:
假设您的应用程序中已经有一些文本,例如,反应式表达式,并且其中已经包含\n
换行符。使用 htmlOutput("text3")
和 output$text3 <- renderText( gsub(pattern = "\\n", replacement = "<br/>", yourtext) )
【参考方案2】:
怎么样
output$text2 <- renderUI(
HTML('hello <br> world')
)
【讨论】:
【参考方案3】:对于阅读本文的任何人,您可能还想使用 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" )
【讨论】:
【参考方案4】:这是一种不同的方法,可能更简单一些。
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)
【讨论】:
【参考方案5】:还有write(x, file = "")
的把戏:
renderPrint(
write(showSequence(), file = "")
)
如果输出是verbatimTextOutput
,那么这可行。
【讨论】:
以上是关于如何在 R 闪亮的字符串中插入新行的主要内容,如果未能解决你的问题,请参考以下文章