Rmarkdown 根据条件输出渲染

Rmarkdown output rendering based on condition

我正在尝试以自动化方式构建一个 Word 文档,该文档将显示我想观看的 Youtube 视频链接列表,其中 Youtube 标题视频作为文本,Youtube url 作为超链接。

我已经使用 Rmarkdown 来做到这一点,并且它适用于定义数量的 urls。
但我的问题是我希望 Rmarkdown 文档可以使用任意数量的 url 作为我的 Links.txt 文件的输入。

例如,Links.txt 文件的内容可以简单地是:

https://www.youtube.com/watch?v=NDDUMon9SJM  
https://www.youtube.com/watch?v=x9iAD3GZyfM  
https://www.youtube.com/watch?v=fHhNWAKw0bY  
https://www.youtube.com/watch?v=jYUZAF3ePFE  
https://www.youtube.com/watch?v=ik4USIChrkY  
https://www.youtube.com/watch?v=HgEGAaYdABA  

有没有办法使用某种 if 条件来每次显示 url 的确切数量?

似乎相关的唯一 post 是这个 one 但我没有真正看到可行的解决方案。

这是我当前的代码:

---
title: "Hyperlinks_Word"
output: word_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)

library('rvest')
library('magrittr')
library('httr')

```


```{r }

url_proxy <- read.table("Links.txt", header = FALSE, sep = "")

url_proxy <- as.character(url_proxy$V1)

link_test <- list()

for(i in 1:length(url_proxy)){
  
  download.file(url_proxy[i], destfile ='scrape_test.html',quiet = TRUE)
  
  url <- read_html('scrape_test.html')
  
  youtube_title <- url%>%html_nodes(xpath = "//title")%>%html_text()
  youtube_title <- data.frame(matrix(unlist(youtube_title), nrow=length(youtube_title), byrow=T))
  colnames(youtube_title) <- "youtube_title"

  link_test[i] <- as.character(youtube_title$youtube_title)
  
}


```


`r i=1`

[`r link_test[i]`](`r url_proxy[i]`)  

`r i=2`

[`r link_test[i]`](`r url_proxy[i]`)  

`r i=3`

[`r link_test[i]`](`r url_proxy[i]`)  

`r i=4`

[`r link_test[i]`](`r url_proxy[i]`)  

一种解决方案是将以下内容添加到块

cat(paste0("[", unlist(link_test), "](", url_proxy,")", collapse="\n\n"))

paste0 负责通过将标题和 URL 粘贴在一起来创建超链接。使用双 \n 创建足够的换行符。

在区块选项中使用 results='asis'

```{r, results='asis'}

url_proxy <- read.table("Links.txt", header = FALSE, sep = "")

url_proxy <- as.character(url_proxy$V1)

link_test <- list()

for(i in 1:length(url_proxy)){
  
  download.file(url_proxy[i], destfile ='scrape_test.html',quiet = TRUE)
  
  url <- read_html('scrape_test.html')
  
  youtube_title <- url%>%html_nodes(xpath = "//title")%>%html_text()
  youtube_title <- data.frame(matrix(unlist(youtube_title), nrow=length(youtube_title), byrow=T))
  colnames(youtube_title) <- "youtube_title"

  link_test[i] <- as.character(youtube_title$youtube_title)
  
}


cat(paste0("[", unlist(link_test), "](", url_proxy,")", collapse="\n\n"))
```