R Markdown - 使用新行格式化代码块中的文本

24

问题

在R Markdown (.Rmd)文档中的代码块中,如何解析包含换行符\n 的字符串,以便将文本显示在新行上?

数据和示例

我想要解析text <- "this is\nsome\ntext",并显示为:

this is
some
text 

以下是一个示例代码块,其中包含几个尝试(但未能产生所需的输出):

```{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

```

附加信息

该文本将来自Shiny应用程序中的用户输入。

例如,ui.R

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

接下来我有一个下载按钮,它使用一个.Rmd文档来渲染输入:

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

这里有一个例子,在R Studio画廊中,点击这里查看


文本的来源是什么?手动输入?还是另一个函数的结果? - A5C1D2H2I1M1N2O1R2T1
我在R中尝试了这个:> cat("hello\nworld\n")
hello
world 但不知道在Rmarkdown中的结果如何。
- Sigve Karolius
@SigveKarolius 在问题中你会看到我尝试在markdown中使用\n,但它会在一行输出。我想要的是在\n处换行。 - tospig
1
有趣。我认为这是关于如何解析Rmarkdown的问题。我最近才开始使用它,但据我所知,knit函数用于创建一个markdown文件,然后由pandoc或其他一些markdown解析器解析以生成最终文档(?在此思考)。你有尝试查看markdown文件吗?我的观点是,如果输出(来自cat)在常规markdown文本字段中打印,则需要换行和两个空格才能被解析为markdown的“新行”。 - Sigve Karolius
1
@SigveKarolius,你提到需要两个空格的评论是所需的解决方案,正如Floo0在他的回答中所示。 - tospig
显示剩余4条评论
1个回答

35
诀窍是在两个连续的"\n"之前使用两个空格:将"\n"替换为" \n"

例如:

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

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

mycat(text)
```

结果:

enter image description here

附注:这在SO上也是一样的(正常的Markdown行为)
如果您只想要一个换行符,请在要断开的行末使用两个空格。


谢谢你!我在这上面挣扎了一个小时。我可以用 \n\n 实现双倍行距,但它永远不会识别 \n。然而,双倍空格前缀“ \n”完美地工作。尽管如此,我觉得这是一个相当严重的错误,或者至少应该在某个地方有更好的文档记录。 - mattador

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接