r - 替换包含转义字符的文件头
问题描述
我为具有以下标头的包创建了一个小插图:
---
title: "My package vignette"
output: rmarkdown::html_document
vignette: >
%\VignetteIndexEntry{MyPackage}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
但是,小插图格式不允许 html_document 允许的全部功能。
我想自动更改 YAML 标头,以便能够以完整的 html_document 格式编织小插图(使用类似的选项toc_float: true
)
我正在尝试使用 读取.Rmd
文件ReadLines
并替换标题gsub
,但我正在努力使用转义字符/正则表达式:
content <- readLines('vignettes/MyPackage.Rmd',encoding = 'UTF-8')
vignette_header <- "output: rmarkdown::html_document
vignette: >
%\\VignetteIndexEntry{MyPackage}
%\\VignetteEngine{knitr::rmarkdown}
%\\VignetteEncoding{UTF-8}"
normal_header <-
'output:
html_document:
toc_float: true'
gsub(vignette_header,normal_header,content )
Error in gsub(vignette_header, normal_header, content) :
regular expression 'output: rmarkdown::html_document
vignette: >
%\VignetteIndexEntry{ALPSYSparams}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}' incorrect, because of 'Invalid contents of {}'
感谢您的建议,欢迎使用转义字符修改文件头的替代方法。
解决方案
作为一种解决方法,我没有修改标题,而是制作了两个具有不同标题的 Rmarkdown 文件,并使用child
chunck 选项插入相同的 Markdown 正文:
- 小插图:
---
title: "My package vignette"
output: rmarkdown::html_document
vignette: >
%\VignetteIndexEntry{MyPackage}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r child=here::here('data/MyPackageVignetteBody.Rmd')}
```
- 功能齐全的降价:
---
title: "My package fully featured Markdown"
output:
html_document:
toc: true
toc_float: true
---
```{r child=here::here('data/MyPackageVignetteBody.Rmd')}
```
推荐阅读
- postgresql - 如何提高 PostgreSQL 查询执行时间?
- javascript - 是否可以将输入的值从我的网站传递到互联网上的任何其他网站
- java - jhat -baseline 功能不适用于 HeapDumpOnOutOfMemoryError 和 jcmd GC.heap_dump 生成的基线
- amazon-web-services - 无法从链中的任何提供商加载 AWS 凭证:WebIdentityTokenCredentialsProvider:无法找到指定的 Web 身份令牌文件
- excel - 转置数据以在两列中对齐
- javascript - 文本对齐:中心无法正常工作?
- java - Vert.X HttpServer 在负载下超时
- c++ - Eigen SparseMatrix 上三角到全矩阵
- tensorflow - 将 Mozilla DeepSpeech 模型转换为在 tensorflow.js 环境中使用
- ios - 在 Swift 5 中更改 Lottie AnimationView 的大小