如何在DT::datatable中使用服务器端处理?

9
我正在使用DT::datatable()在R markdown文件中可视化表格。
# R markdown file
library(DT)

```{r viewdata} 
# this is an example but my actual dataset has 10000 rows and 100 columns
var.df <- data.frame(x = rnorm(1:10000), y = rnorm(1:10000),...)
DT::datatable(data = var.df)
```

当我运行这段代码时,会出现警告,并且生成的HTML加载速度非常慢:
DT::datatable(var.df)
Warning message:
In instance$preRenderHook(instance) :
  It seems your data is too big for client-side DataTables. You may consider server-side processing: http://rstudio.github.io/DT/server.html

我知道在DT::renderDataTable()中有一个server = TRUE/FALSE选项,但是我在DT::datatable中没有看到任何服务器选项。

我该如何使用DT::datatable()进行服务器端处理?


4
实际上,Markdown 没有服务器:HTML 仅生成一次。Shiny 有一个服务器,这就是为什么您可以使用 DT::renderDataTable() 在服务器上呈现的原因。 - HubertL
1
明白了。谢谢!您可以把您的评论移到答案中让我接受吗? - Komal Rathi
Markdown有作为闪亮应用程序运行的选项链接。查看datatable()文档,可以使用来自底层JavaScript库的任何选项,包括serverSide 链接。然而这并没有起作用..... - Michael Henry
啊,将我的对 datatable() 的调用包裹在 renderDataTable({}) 中就足以使这个工作正常运行。 - Michael Henry
1个回答

6
警告信息如下:

看起来您的数据对于客户端DataTables来说太大了。您可以考虑使用服务器端处理:http://rstudio.github.io/DT/server.html

文档网站上展示了一个Shiny示例,该示例使用DT::renderDataTable()。要使用服务器端处理模式,您必须首先拥有一个“服务器”。DT::datatable()只生成静态HTML小部件,并且在其后面没有服务器。所有数据都存储在并由您的Web浏览器处理。
Shiny不是DT的唯一可能的服务器,但可能是最方便的(除非您真的了解服务器端处理背后的技术细节)。要在R Markdown中使用Shiny,请参见R Markdown书籍第19章。以下是一个示例:
---
title: "The server-side processing mode for DT in R Markdown"
runtime: shiny
output: html_document
---


```{r}
DT::renderDT(ggplot2::diamonds)
```

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