在仪表板中显示文件内容Shiny

时间:2017-07-30 00:22:10

标签: r shiny text-files shinydashboard

我正在尝试从文本文件中为闪亮的仪表板显示用户的帮助。但是我无法控制新行的显示(“\ n”)。它们在文本文件和文本中,但闪亮不想显示它们。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

Shiny将所有元素转换为HTML,不会呈现换行符(\n)。为了创建换行符,您可以使用p()函数将每行包装在一组HTML段落标记中。

这意味着您需要在应用中使用renderText()textOutput,而不是使用renderUIuiOutput

下面给出了如何将换行符转换为段落标记的完整示例。

require(stringi)
require(shiny)

# write text file with standard newline characters
str <- 'These are words\nwith newline characters\n\nthat do not render.'
write(x = str, file = 'Data.txt')

ui <- fluidPage(
  h4('Reading raw text from file:'),
  textOutput('textWithNewlines'), # text with newline characters output

  h4('Converting text to list of paragraph tags'), 
  uiOutput('textWithHTML') # ui output as a list of HTML p() tags
)

server <- function(input,output){

  output$textWithNewlines <- renderText({
    rawText <- readLines('Data.txt')
    return(rawText)
  })

  ### SOLUTION ###
  output$textWithHTML <- renderUI({
    rawText <- readLines('Data.txt') # get raw text

    # split the text into a list of character vectors
    #   Each element in the list contains one line
    splitText <- stringi::stri_split(str = rawText, regex = '\\n')

    # wrap a paragraph tag around each element in the list
    replacedText <- lapply(splitText, p)

    return(replacedText)
  })

}
shinyApp(ui=ui, server=server)