【问题标题】:Rmarkdown output rendering based on conditionRmarkdown根据条件输出渲染
【发布时间】:2020-11-02 14:34:57
【问题描述】:

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

我已经使用 Rmarkdown 来做到这一点,它适用于定义数量的 url。
但我的问题是我希望 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 数量?

似乎相关的唯一帖子是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]`)  

【问题讨论】:

  • 不太清楚你在问什么。您显示 URL 的条件是什么?还是您只是想在 Links.txt 文件中显示所有名称和 URL,而不必为每个单独的条目编写内联代码?
  • 是的,你最后一个问题的答案是肯定的

标签: r if-statement r-markdown word


【解决方案1】:

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

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"))
```

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 2017-03-08
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2021-10-04
    • 2018-04-21
    相关资源
    最近更新 更多