【问题标题】:How to use serverside processing in DT::datatable?如何在 DT::datatable 中使用服务器端处理?
【发布时间】:2017-04-01 13:23:41
【问题描述】:

我正在使用 DT::datatable() 来可视化 R 降价文件中的表格。

# 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() 进行服务器端处理?

【问题讨论】:

  • 实际上没有带有markdown的服务器:HTML生成一次。 Shiny 有一个服务器,这就是为什么你可以使用DT::renderDataTable()在服务器上渲染
  • 知道了。谢谢!您能否将您的评论移至答案以便我接受?
  • Markdown 可以选择作为闪亮的应用程序运行link。查看datatable() 文档,可以使用来自底层javascript 库的任何选项,包括serverSidelink。然而这不起作用.....
  • 啊,将我对 datatable() 的调用封装在 renderDataTable({}) 中就可以完成这项工作。

标签: r r-markdown dt


【解决方案1】:

警告信息说:

您的数据对于客户端数据表来说似乎太大了。可以考虑服务端处理:http://rstudio.github.io/DT/server.html

在文档网站上,它显示了一个使用 DT::renderDataTable() 的 Shiny 示例。要使用服务器端处理模式,首先必须有一个“服务器”。 DT::datatable() 只生成一个静态 HTML 小部件,其背后没有服务器。所有数据都存在于您的网络浏览器中并由您的网络浏览器处理。

Shiny 不是 DT 唯一可能的服务器,但可能是最方便的一种(除非您真正了解服务器端处理背后的技术细节)。要将 Shiny 与 R Markdown 一起使用,请参阅 Chapter 19 of the R Markdown book。这是一个例子:

---
title: "The server-side processing mode for DT in R Markdown"
runtime: shiny
output: html_document
---


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    相关资源
    最近更新 更多