作为一个搞数据分析的,动笔总少不了图和代码,markdown
对代码本身就有不错的区分和高亮支持,但你永远不可能用markdown
写出图来啊!这类东东人们称之为静态的。为了解决这类问题,现在有两个非常流行的动态文档工具,一是Python
中的Jupyter Notebook
,另外就是Rstudio
公司开发的 Rmarkdown
了。
就流行度来说,Jupyter Notebook
是胜Rmarkdown
良多的,前者不仅支持Python
本身,而且支持R
,不仅如此,它还扩展到其他一些语言中去了(当然Rmarkdown
现在也能调用Python
和Shell
等语言代码)。但我不知道什么原因,Jupyter Notebook
导出的markdown
文档实在丑的很,虽然Github
很神奇的能够全部进行识别并显示出应有的效果。另外,Notebook用来调用写博客并不方便。Rmarkdown
直接用来写博客则方便得多,语法跟markdown
差不多,又能利用谢益辉大大的knitr
包将其转换为markdown
文档。
总之,作为一个R爱好者,当然用R搞事情。
谢益辉已经开发了一个叫blogdown
的包,专门用Rmarkdown
部署生成博客,支持hugo
所有的主题。如果读者还没有自己的博客,又使用R,推荐阅读https://bookdown.org/yihui/blogdown/创建自己的博客并用Rmarkdown
发布文章。如果你喜欢使用hexo
博客系统,并想要使用Rmarkdown
写文章,下面就是你需要阅读的干货了,当然我这种方法不仅限于用在hexo
博客系统。
我实际做的事情就是写了两个R
的函数,可以通过调用的方式创建Rmarkdown
文档,并利用knitr
包的knit
函数将其转换为markdown
文档。
需要文档代已经提交到Gist上面,可以点击查看和下载。
第一步
创建一个Rmarkdown
文档模板,这样我们可以非常方便地在每次写新文章时生成YAML头信息。
其内容如下,简单设定标题、作者、日期、目录、标签,你可以根据自己情进行更改:
上面Gist文档日期使用了R
命令,后续我们使用knit
可以将其自动转换为markdown
文档生成时的日期。
你可以自己设置,只要符合头信息规范即可:
1 |
|
我们将它保存为template.Rmd
文件(Rmarkdown
文件一般以.Rmd
或者.rmd
结尾)。
第二步
将下面两个函数保存到一个R文件(以.R
结尾)中:
1 | ################ |
我把它保存为new_post.R
,上述我进行了比较详细的注释,请在使用之前仔细阅读一下。
使用
我以现在以Rmarkdown
写的这篇文章为例,简单讲一下使用。
我推荐在与你markdown
博文目录同级创建一个_rmd
目录,你可以将该目录设为一个项目目录,专门用来写rmarkdown
文档。
或者你每次用setwd()
函数设定工作目录。
将前两步创建的两个文件扔到该目录。运行R文件:
1 | source("./new_post.R") |
这样就能在R控制台调用里面的两个函数了。
创建一个Rmarkdown
文档:
1 | > new_rmd_post("how-to-write-rmd-documents-in-hexo-system") |
创建的文档名会自动添加年-月-日和后缀。
然后你就可以开始写博客了,写好后将Rmarkdown
转换为markdown
文档:
1 | > new_md_post(template_name = "2018-02-05-how-to-write-rmd-documents-in-hexo-system.Rmd", post_path = "../_posts") |
细心的娃娃可以感觉到我单独创建_rmd
目录并将其设为工作目录的好处:需要键入函数的参数非常少。特别是你固定你自己的写法之后,你将两个函数中的目录路径默认参数全部对应上,再使用R
的TAB
键补全,运行命令简直秒秒种,专心写文章就好啦。
本文没有涉及到画图,从理论上讲是毫无问题的,因为我只是创建了一个快速的文档创建和转换接口。后续我少不了会用到绘图,到时候再讲。