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"))
```
我正在尝试以自动化方式构建一个 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"))
```