在R Markdown中加载使用qsave保存的表格

m3eecexj  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个reactable表,如果我将R脚本嵌入到R Markdown中,就可以在网页上成功显示该表。但是,我想在单独的R脚本中构建该表,并将其加载到R Markdown文件中。
在一个单独的R脚本中,我构建了可React表。

> class(react_tbl)
[1] "reactable"  "htmlwidget"

该表显示在RStudio查看器中。
现在保存该表:

qsave(react_tbl, react_table_filename)

为了进行检查,我在R脚本中执行以下操作:

react_tbl <- qread(react_table_filename)

react_tbl

该表将出现在查看器中。
现在,在R Markdown中,我按照通常的方式使用Blogdown〉Github〉Netlify来完成这一操作并发布页面:

```{r, echo=FALSE, message=FALSE, warning=FALSE}

library("qs")

react_table_filename <- "<path to saved react table.qs>"
react_table <- qread(react_table_filename)
react_table

网页上的结果是大量的文本:

$x

$x$tag

<Reactable data="{"etf_symbol":["CASH.TO","CSAV.TO","HISA.NE","NSAV.NE","PSA.T O"],"five_hundred":...


我如何让实际的React表出现?
xam8gpfp

xam8gpfp1#

在R的S3系统中,特殊的打印是由对象特有的print方法完成的,如您所见,reactable创建了类为"reactable""htmlwidget"的对象,因此R将首先查找print.reactable函数,然后查找print.htmlwidget,最后查找print.default。并且将使用它找到的第一个(在R Markdown文档中,自动打印实际上将查找knit_print.reactableknit_print.htmlwidget,然后是knit_print.default,但是这个区别在这里不相关)。
在RMarkdown文件中,加载了对象,但没有加载打印函数。将library(reactable)添加到文档的设置中应该可以解决问题。reactable导入htmlwidgets,因此该包(和其他一些包)也将自动加载,并且打印方法将可用。

相关问题