Ben*_*Ben 5 git r knitr r-markdown
我正在用 rmarkdown 编写分析报告,并希望有一个“文档版本”部分,我将在其中指出文档的不同版本和所做的更改。
我没有手动写下来,而是考虑使用 git history 并自动将其插入 Markdown 文档(将其格式化为表格)。
我怎样才能做到这一点?是否可以?
安装git2r,https://github.com/ropensci/git2r然后你可以做类似的事情:
> r = repository(".")
> cs = commits(r)
> cs[[1]]
[02cf9a0] 2017-02-02: uses Rcpp attributes instead of inline
Run Code Online (Sandbox Code Playgroud)
现在我有了这个存储库上所有提交的列表。您可以根据您的需要从每次提交和格式中获取信息到您的文档中。
> summary(cs[[1]])
Commit: 02cf9a0ff92d3f925b68853374640596530c90b5
Author: barryrowlingson <b.rowlingson@gmail.com>
When: 2017-02-02 23:03:17
uses Rcpp attributes instead of inline
11 files changed, 308 insertions, 151 deletions
DESCRIPTION | - 0 + 2 in 2 hunks
NAMESPACE | - 0 + 2 in 1 hunk
R/RcppExports.R | - 0 + 23 in 1 hunk
R/auxfunctions.R | - 1 + 1 in 1 hunk
R/skewt.r | - 0 + 3 in 1 hunk
R/update_params.R | - 1 + 1 in 1 hunk
R/update_params_cpp.R | -149 + 4 in 2 hunks
src/.gitignore | - 0 + 3 in 1 hunk
src/RcppExports.cpp | - 0 + 76 in 1 hunk
src/hello_world.cpp | - 0 + 13 in 1 hunk
src/update_params.cpp | - 0 +180 in 1 hunk
Run Code Online (Sandbox Code Playgroud)
因此,如果您只想要时间和提交消息,那么您可以从对象中获取它。
> cs[[3]]@message
[1] "fix imports etc\n"
> cs[[3]]@committer@when
2017-01-20 23:26:20
Run Code Online (Sandbox Code Playgroud)
我不知道是否有适当的访问器函数,而不是使用 @ 符号来获取插槽。需要多读一点文档......
您可以通过以下方式从您的提交中创建一个数据框:
> do.call(rbind,lapply(cs,function(cs){as(cs,"data.frame")}))
Run Code Online (Sandbox Code Playgroud)
它将日期转换为 POSIXct 对象,这很好。从数据框中创建 Markdown 表应该很简单!
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |