r markdown - format text in code chunk with new li

2019-01-25 08:58发布

问题:

Question

Within a code chunk in an R Markdown (.Rmd) document how do you parse a string containing new line characters \n, to display the text on new lines?

Data and example

I would like to parse text <- "this is\nsome\ntext" to be displayed as:

this is
some
text 

Here is an example code chunk with a few attempts (that don't produce the desired output):

```{r, echo=FALSE, results='asis'}

text <- "this is\nsome\ntext"  # This is the text I would like displayed

cat(text, sep="\n")     # combines all to one line
print(text)             # ignores everything after the first \n
text                    # same as print

```

Additional Information

The text will come from a user input on a shiny app.

e.g ui.R

tags$textarea(name="txt_comment")      ## comment box for user input

I then have a download button that uses a .Rmd document to render the input:

```{r, echo=FALSE, results='asis'}
input$txt_comment
```

An example of this is here in the R Studio gallery

回答1:

The trick is to use two spaces before the "\n" in a row: So replace "\n" by " \n"

Example:

```{r, results='asis'}
text <- "this is\nsome\ntext"

mycat <- function(text){
  cat(gsub(pattern = "\n", replacement = "  \n", x = text))
}

mycat(text)
```

Result:

P.S.: This is the same here on SO (normal markdown behaviour)
If you want just a linebreak use two spaces at the end of the line you want to break



标签: r markdown