在R中获取HTML语法着色的函数

时间:2015-08-04 16:49:03

标签: r syntax knitr

我想知道是否有办法在R中使用一行代码的语法着色来输出HTML。它应该做类似的事情:

HTMLoutput <- HTMLsysntaxColoring("a <- paste('hello,', 'world')")

输出应该是可读的HTML代码,显示带有R语法着色的行。 Knit为整个文档做了类似的事情,但我希望将它用于一个命令行。

我这样做的原因是我正在开发一个包来进行R中的分析(它在CRAN,GUIProfiler中)。它构建一个HTML报告,其中包含为需要更多时间的地方隐藏的配置文件代码。不幸的是,我使用Nozzle.R1而不是knitr来生成报告。 Nozzle.R1似乎已停止使用,无法显示带语法着色的代码。 knitr正在积极更新,并且确实有语法着色。

不是使用knitr从头开始重新构建包(也许是将来我会做的),而是尝试使用knitr“修补它”来生成语法着色并将其粘贴到Nozzle.R1包中。

1 个答案:

答案 0 :(得分:2)

这应该这样做,虽然我很好奇你真正想要的是什么。

html_syntax_coloring <- function(r_code) {
  require(knitr)
  r_code <- paste0("```{r eval=FALSE}\n", paste0(r_code, collapse="\n"), "\n```")
  tmp_in <- tempfile(fileext=".Rmd")
  cat(r_code, file=tmp_in)
  tmp_out <- tempfile(fileext=".html")
  on.exit(unlink(tmp_out))
  knit2html(tmp_in, tmp_out, quiet=TRUE)
  paste0(readLines(tmp_out), collapse="\n")
}

html_syntax_coloring("a <- paste('hello,', 'world')")