Вдохновленный этот ответ, я хотел бы использовать, например, этот фрейм данных в R
input <- data.frame(text = c("a", "b", "c"),
page_number = c(3, 5, 6))
для создания списка из текста, который ссылается на разные номера_страниц. Решение описывает, как использовать JavaScript в Markdown, но, к сожалению, не описывает, как использовать его в фрагментах кода (что необходимо для динамического создания списка).



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Извините, я не могу комментировать, но вы хотите фрагменты javascript? если да, то поможет ли это вам?
Первый
install.package(knitr)
Затем в вашем файле R Markdown:
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(knitr)
```
и
```{js}
some javascript code in here
```
Можете ли вы попробовать установить пакет вязальщица и добавить библиотеку кода (knitr) в настройку r в файле уценки R? Обновлено: Возможно, это может вам помочь: rmarkdown.rstudio.com/authoring_knitr_engines.html%23sql
Самый простой способ - использовать results='asis' в блоке кода, который создает желаемую необработанную строку. Вы можете обернуть его в необработанный блок HTML, чтобы убедиться, что он не читается как Markdown, а обрабатывается как HTML.
~~~{=html}
```{r, echo=FALSE, results='asis'}
input <- data.frame(text = c("a", "b", "c"),
page_number = c(3, 5, 6))
links <- paste('<a href = "', input$text, '">', input$page_number, "</a>", sep = "")
cat(links, sep = "\n")
```
~~~
Мне нравится использовать пакет htmltools для такой работы.
Вы можете создать привязку HTML с помощью htmltools::a().
Чтобы создать ссылку на слайд №2, вам нужно написать:
htmltools::a("text", href = "javascript:slidedeck.loadSlide(2)")
Вы можете легко векторизовать это выражение. Не забудьте передать получившийся список в htmltools::tagList().
Вот минимальный Rmd с примером, упомянутым в вопросе:
---
title: "Presentation"
output: ioslides_presentation
---
## Slide 1 - page 2
This is the first slide. With links to other slides:
```{r echo=FALSE}
input <- data.frame(text = c("a", "b", "c"),
page_number = c(3, 5, 6))
htmltools::tagList(
mapply(
htmltools::a,
input$text,
href = sprintf("javascript:slidedeck.loadSlide(%i)", input$page_number),
SIMPLIFY = FALSE)
)
```
\
If you prefer the tidyverse:
```{r echo=FALSE, message=FALSE}
library(tidyverse)
tribble(
~text, ~page_number,
"a", 3,
"b", 5,
"c", 6
) %>%
transmute(
text,
href = str_glue("javascript:slidedeck.loadSlide({page_number})")
) %>%
pmap(~ htmltools::a(.x, href = .y)) %>%
htmltools::tagList()
```
## Slide 2 - page 3
Text for slide 2
## Slide 3 - page 4
Text for slide 3
## Slide 4 - page 5
Text for slide 4
## Slide 5 - page 6
Text for slide 4
Спасибо за Ваш ответ. Я попытался использовать <a href = "javascript:slidedeck.loadSlide(4)"> Slide 4 </a> в блоке js. К сожалению, это не работает. Любое предложение?