包含JS,R Markdown的动态标签集

时间:2018-04-13 19:18:22

标签: r r-markdown

我最近问了一个关于dynamically creating tabsets containing graphs in R markdown.

的问题

绘制基础R和ggplot图有不同的方法。但是,这些方法似乎不适用于DT表:

# DataTable Tabs {.tabset .tabset-pills}

```{r}
library(DT)

dt_list <- list(datatable(data.frame('x'=rnorm(100))),
                datatable(data.frame('y'=diffinv(rnorm(99)))),
                datatable(data.frame('z'=diff(rnorm(101)))))
names(dt_list) <- c('x','y','z')

```

```{r, results='asis'}
for(h in names(df)){
  cat("##", h, '<br>', '\n')
  cat('This is text for', h, '<br>', '\n\n')
  print(dt_list[[h]])
  cat('\n', '<br>', '\n\n')
}
```

ggplot

我如何动态渲染这些标签?我知道DT表是建立在JS上的,所以我想这种方法也有助于动态渲染很多其他类型的内容。

1 个答案:

答案 0 :(得分:1)

我不确定问题出在哪里。但GitHub已经存在问题。 解决方法是渲染另一个表并将其删除。另请注意在循环中使用tagList。似乎可以加载数据表库,并且选项卡式数据表可以工作:

---
title: "Untitled"
output: html_document
---


# DataTable Tabs {.tabset .tabset-pills}

```{r}
library(DT)
library(htmltools)
# we simply select the table, look for the parent container 
# and remove it from the DOM
jsc <- 'function(settings, json) { $(this).parents(".datatables").remove(); }'
datatable(matrix(NA, 2, 2), options = list("initComplete" = JS(jsc)))
```


```{r}
dt_list <- list(datatable(data.frame('x'=1:10)),
                datatable(data.frame('y'=11:20)),
                datatable(data.frame('z'=21:30)))
names(dt_list) <- c('x','y','z')
```

```{r, results='asis'}
for(h in names(dt_list)){
  cat("##", h, '<br>', '\n')
  cat('This is text for', h, '<br>', '\n\n')
  print(tagList(dt_list[[h]]))
  cat('\n', '<br>', '\n\n')
}
```