从r代码输出到rmarkdown输入

时间:2018-05-10 07:14:20

标签: r markdown r-markdown

我想带一个带名称/链接的csv文件,并将其转换为按字母顺序排序的rmarkdown列表。排序很简单,格式化很容易,但从R输出到降价是令人困惑的。

我有以下csv,

name,link
Compiling,compiling.Rmd
Setup,setup.Rmd
Entities,entities.Rmd

然后我有一个R文件按字母顺序对上面的csv进行排序,然后以降价格式(目录)返回。

getTOC <- function() {
  toc <- read.csv("data/toc.csv", fileEncoding="UTF-8-BOM")
  toc <- toc[order(toc$name),]
  toc$ind <- seq(nrow(toc))

  # into Rmd format
  toc_md <- data.frame(NULL)
  toc_md <- paste0(toc$ind, ". [", toc$name, "](", toc$link, ")\n")
  return(toc_md)
}

输出为:

"1. [Compiling](compiling.Rmd)" "2. [Entities](entities.Rmd)"   "3. [Setup](setup.Rmd)" 

这个问题感觉很愚蠢,但是如何让这个输出以与下面相同的方式读入Rmd文件,因为任何输出前一个的方法似乎都会添加额外的符号等,这使得.Rmd不可读。

1. [Compiling](compiling.Rmd)
2. [Entities](entities.Rmd)
3. [Setup](setup.Rmd)

1 个答案:

答案 0 :(得分:1)

你可以使用pander包,它有一堆函数可以输出到markdown。其中一个是pandoc.p,它为您提供的字符向量中的每个项目创建段落。要打印您生成的markdown,您需要为chunk设置results='asis'。所以你可以使用一个块,如:

```{r results='asis'}
toc <- getTOC()
pandoc.p(toc)
```

如果你保持降价,你会看到这是生成的:

1. [Compiling](compiling.Rmd)
2. [Entities](entities.Rmd)
3. [Setup](setup.Rmd)

然后会像你期望的那样编织html或者乳胶。

还有其他pandoc.*个功能可能有用,例如pandoc.linkpandoc.list