函数获取RMarkdown文档的YAML头中没有完整路径的文件名

时间:2015-09-23 00:04:14

标签: r rstudio knitr r-markdown

我试图通过更改编写Rmd文件输出的目录来修改RStudio的编织按钮的行为。我已经开始使用this answer,但是我没有使用固定字符串给出的文件名,而是希望输出文件名基于Rmd文件名。但是,变量inputFile包含Rmd文件的完整路径。有没有办法只获取没有路径的文件名?

我正在使用的标题生成完整路径+文件名,我只想文件名(test2是我在当前工作目录中创建的目录):

---
knit: (function(inputFile, encoding) {rmarkdown::render(inputFile,encoding=encoding, output_file=file.path(dirname(inputFile), "test2", paste0(substr(inputFile,1,nchar(inputFile-4),".html"))) })
output: html_document
---

2 个答案:

答案 0 :(得分:0)

我仍然对直接给我输入文件名的命令感兴趣,正如问题中所指定的那样,但我找到了针对特定问题的解决方法,在substr调用中使用正则表达式在this

knit: (function(inputFile, encoding) {rmarkdown::render(inputFile,encoding=encoding, output_file=file.path(dirname(inputFile), "test2", paste0(substr(inputFile,rev(gregexpr("/", inputFile)[[1]])[1]+1,nchar(inputFile)-4),".html"))) })

答案 1 :(得分:0)

如今,knitr带有一个函数current_input(),该函数为您提供Rmd文件的名称作为字符串。并且tools::file_path_sans_ext()将删除扩展名。

但是要解决OP的确切问题,今天可能有更好的选择,例如knitr options,软件包ezknitr,RStudio“编织目录” button或{ {3}}。