Чтобы определить ссылки вне файла rmd
, вы можете использовать параметризованный отчет .Это позволяет передавать значения в документ rmarkdown
при его компиляции.Для этого сначала создайте документ rmarkdown
, который включает в себя требуемые параметры, которые объявлены в заголовке yaml
и затем использованы в отчете.Затем в отдельном R-скрипте запустите команду render
(из пакета rmarkdown
) и передайте нужные значения параметров.
Вот пример, который использует cat
или paste
для генерации ссылок.Для сравнения я также добавил второй набор параметров, которые добавляют разные ссылки, используя методы из ответа @ JohnCoene.Я сохранил документ rmarkdown
как "test.rmd"
, так как документ идентифицируется в команде render
.
rmarkdown
документ
---
output: html_document
params:
text1: "add text"
link1: "add URL"
text2: "add text"
link2: "add URL"
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r}
# Function to add link
myFun <- function(text, link, inline=TRUE) {
if(inline) {
paste("[", text, "](", link, ")", sep="")
} else {
cat("[", text, "](", link, ")", sep="")
}
}
```
Blah, blah, blah, more text. And here's the link:
```{r, results="asis"}
myFun(params$text1, params$link1, inline=FALSE)
```
Blah, blah, blah, more text. And here's a way to `r myFun(params$text1, params$link1)`.
Or, using the examples from `@JohnCoene's` answer:
With an HTML tag:
```{r, results="asis"}
tg <- function (link, text){
paste0("<a href='", link, "'>", text, "</a>")
}
tg(params$link2, params$text2)
```
With `htmltools`:
```{r}
# install.packages("htmltools")
library(htmltools)
tags$a(
href = params$link2,
params$text2
)
```
Отдельный скрипт Rдля рендеринга rmarkdown
документа
library(rmarkdown)
render(input="test.rmd",
params=list(text1="link to Stackoverflow",
link1="/12119310/r-markdown-giperssylka-vne-faila-rmd",
text2="link to google",
link2="https://google.com"))
Вот как выглядит выходной HTML-документ: