R Notebook HTML格式 - 向分页表添加超链接

时间:2017-05-19 12:05:54

标签: r hyperlink html-table r-markdown rnotebook

我想从R笔记本编写一个html文件,其中包含带有超链接的分页表 可以使用knitr::kable插入超链接,但我找不到使用此功能生成 分页 表格的方法。
分页表是默认的笔记本输出,但我找不到插入功能性 超链接 的方法。非常感谢你的帮助。

---
title: "Paged notebook table with hyperlinks"
output:
  html_notebook:
    code_folding: "hide"
---

```{r rows.print=3}
wiki.url <- "https://en.wikipedia.org/wiki/"
df1 <- data.frame(Month=month.name, URL=paste0("[", month.name, "](", wiki.url, month.name, ")"))
df2 <- data.frame(Month=month.name, URL=paste0("<a href='", wiki.url, month.name, "'>", month.name, "</a>"))
print(df1)
```

```{r rows.print=3}
print(df2)
```

```{r rows.print=3}
knitr::kable(df1)
```

```{r rows.print=3}
knitr::kable(df2)
```

1 个答案:

答案 0 :(得分:1)

由于我的问题似乎没有一个完美的解决方案,我想我会发布我提出的解决方法 - 万一有人有类似的问题。
我使用knitr::kable创建了表格和超链接,然后添加了一个html按钮和inline javascript来切换可见性 - 不像分页表那样优雅,但完成了工作。
请注意默认情况下文件底部的<script>标记hides表 (将代码粘贴到RStudio中的.Rmd文件):

---
title: "Managing large tables with hyperlinks in html notebook"
output:
  html_notebook:
    code_folding: "hide"
---

<script>
function myFunction(id) {
    var x = document.getElementById(id);
    if (x.style.display === 'none') {
        x.style.display = 'block';
    } else {
        x.style.display = 'none';
    }
}
</script>

```{r}
library(knitr)
df1 <- data.frame(Month=month.name, Link=paste0("[", month.name, "](https://en.wikipedia.org/wiki/", month.name, ")"))
```

<button class="button" onclick="myFunction('DIV_months')">Show/hide table</button>
<div id="DIV_months" class="div_default_hide">
```{r}
knitr::kable(df1)
```
</div>

<script>
var divsToHide = document.getElementsByClassName("div_default_hide");
for(var i = 0; i < divsToHide.length; i++)
    {
    divsToHide[i].style.display = 'none';
    }
</script>