微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:尝试应用 lazy_dt 以使用 dtplyr

如何解决R:尝试应用 lazy_dt 以使用 dtplyr

我正在尝试在 R Shiny 中创建一个仪表板。作为此仪表板的一部分,我有一个非常大的数据集,其中包含一个响应式添加的列,而该数据集的三个响应式子集是通过对不同日期进行过滤生成的。

到目前为止,我已经通过 dplyr 并使用 filter 和 mutate 函数实现了上述目标。但是,我注意到代码中的这些点似乎正在减慢它的速度。当任何触发这些表更新的反应变量发生更改时,处理每个表大约需要 10 秒。所以我希望加快速度。

我知道 dplyr 比 data.table 慢得多,但另一方面,它更容易理解语法。我也知道存在 dtplyr 包可以将 dplyr 代码转换为 data.table 语法,但我无法让它工作。

我一直在查看文档和一些 youtube 演示,据我了解,似乎为了使用 dtplyr,我需要使用 lazy_dt 函数来转换表,然后将标准的 dplyr 函数应用于该表然后使用 as.data.table() 或 as.tibble() 命令将其转换回数据表。

然而,代码不起作用,尽管我基本上遵循了与演示中完全相同的语法。

这里是一些使用我在主代码中导入的库的示例代码,它使用了 iris 数据集。它在打印和 as.data.table 命令中产生以下错误

Error in env_get_list(ns_env("data.table"),dt_funs) : 
  argument "default" is missing,with no default

我无法弄清楚此错误的含义或发生的原因。没有“认”参数。 lazy_dt 唯一需要的参数是 X,它是要通过它传递的数据集。

这是示例代码。我正在关注这个 Youtube 教程... https://www.youtube.com/watch?v=qwHHVU-NBLw ...您可以看到库后的前三行代码与视频中的语法完全相同,但是在视频中,打印函数打印了表格,但我的却产生了错误。任何想法为什么?注意:即使将它应用到我的实际代码中,我也收到了这个错误,所以这不仅仅是因为我试图打印 lazy_dt 表。

library(shiny)
library(shinydashboard)
library(DT)
library(data.table)
library(dtplyr)
library(dplyr)
library(tidyverse)
library(Dict)
library(hash)
library(ModelMetrics)
library(vroom)
library(lubridate)
library(Rmisc)

iris_lazy <- dtplyr::lazy_dt(x=iris)

class(iris_lazy)

print(iris_lazy)

as.data.table(iris_lazy)

解决方法

尝试将您的 data.table 版本升级到 >= 1.13.0。 data.table 的最低要求将在下一版本的 dtplyr 中更新。

https://github.com/tidyverse/dtplyr/issues/224

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。