在Rmarkdown表格(pdf)中包含链接

8
我正在尝试在Rmarkdown中创建PDF时,在“kable”表格中包含特定网页的链接。
该表格有4列,我希望链接位于第二列,该列目前包含字符串。下面是表格的输出结果:
    knitr::kable(ind_rank_table_final,row.names = FALSE,caption = "Industry Rank",align = rep("l",ncol(ind_rank_table)))

这是完全可行的,但问题是什么?请提供一个可重现的例子,例如我不知道ind_rank_table_final是什么,所以很难帮助您。 - daroczig
2个回答

11

使用paste0函数,您可以在数据框中构建格式为markdown的URL,并将其传递给kable函数,如下所示:

---
output: pdf_document
---
```{r}
# some urls
urls <- rep("https://stackoverflow.com/", 10)
# use paste0 to compose markdown-formatted hyperlinks
mtcars$mpg <- paste0("[", mtcars$mpg, "](", urls, ")")
# print the table, with hyperlinked text
knitr::kable(head(mtcars))
```

你可以看到结果,在mpg列中的蓝色文本,如果我将鼠标悬停在上面,可以看到URL:

图片描述

如果您想打印表格中的URL并使它们可点击,则可以像这样执行mtcars$mpg <- paste0("[", urls, "](", urls, ")")

图片描述

这符合您的要求吗?使用paste0对表格进行各种操作非常方便,例如将多个值组合在一个单元格中以及应用条件格式(如对显著值加粗)


1
如果您不想手动构建Markdown URL,也可以使用pander包中的pandoc.link(或pandoc.link.return以捕获结果而不是发送到stdout)。 - daroczig
有没有特定版本的kable可用于此操作?我已尝试并生成了tex错误。我具有相同的使用情况kable + pdf_book输出。 - SkyWalker
1
在bookdown中,链接会打印为[21](https://stackoverflow.com/)等形式,而不是可点击的链接。@Ben,你有什么建议吗?非常感谢! - mavericks

2
对于那些使用bookdown编写PDF的人,@Ben的答案并不能完全帮到你。正如@mavericks指出的那样,你仍然会看到完整的文本([21](https://stackoverflow.com/),与@maverick的例子相符)。
要解决这个问题,在kable()中添加参数format = "pipe"format = "simple"。虽然"latex"选项可以生成一个工作链接,但它会像@maverick的例子一样显示。在bookdown文档中,kable()的默认行为是自动确定格式,我猜想这种情况下应该是"latex"?
我不知道,但这应该为bookdown用户生成@Ben的第一个表格。
输出:bookdown::pdf_document2
# some urls
urls <- rep("https://stackoverflow.com/", 10)
# use paste0 to compose markdown-formatted hyperlinks
mtcars$mpg <- paste0("[", mtcars$mpg, "](", urls, ")")
# print the table, with hyperlinked text
knitr::kable(head(mtcars), format = "simple")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接