在ASIS;R Markdown块中初始化JS渲染器的推荐方式 [英] Recommended way to initialize JS renderer in 'asis' R Markdown chunk

查看:17
本文介绍了在ASIS;R Markdown块中初始化JS渲染器的推荐方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

"ASIS"块对于输出Markdown文档中的对象列表非常有用,请参阅以下示例:HighcharterDTLeaflet、.

但是,在上面的示例中,如果呈现器在前面的块中没有被调用过一次,那么对象列表将不会打印,因此它会被初始化:这是一个棘手的解决办法,我更多地是通过尝试/错误找到解决方案,而不是在文档中找到它。

这是一个可重现的问题,也发布在https://github.com/rstudio/rmarkdown/issues/1877

---
title: "Test"
output:
  html_document
---



```{r,echo=F}
library(DT)
library(rmarkdown)
library(purrr)
library(knitr)

df_list <- list("cars" = mtcars, "flowers" = iris)

knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE)
```

```{r}
# If this first initialization isn't run, tabs won't print
DT::datatable(data.frame())
```

# Test tabs {.tabset}

```{r, results='asis' }
imap(df_list, ~{
  cat('## Subtab ',.y,'
')
  cat('
')
  DT::datatable(.x) %>%
    htmltools::tagList() %>% as.character() %>% cat() })

```
 

  

推荐答案

我的问题已经由@cderv:
给出了答案 https://github.com/rstudio/rmarkdown/issues/1877#issuecomment-679864674

https://bookdown.org/yihui/rmarkdown-cookbook/results-asis.html#results-asis中现在更详细地记录了结果=‘ASIS’。它的目的是从R块生成原始选取内容。任何操作都必须导致文本输出,这隐含地意味着那些块中的任何R对象都不会真正发生任何变化,因为在KINIT_PRINGING内容时,CONINR不会进行调整(因为它会突出文本)

我想我不会使用result=‘asis’来cat()一个像htmlwidget这样的复杂R对象。您找到了解决方法,但可能会遇到其他问题。

由于该答案@艺惠点赞,提示使用htmlwidget上的cat + asis风险自负。

但是,我将亲自继续使用问题中提到的变通方法,因为只要它起作用,我发现它非常实用。

感谢@atusi&;@cderv提供的宝贵意见。

这篇关于在ASIS;R Markdown块中初始化JS渲染器的推荐方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆