【问题标题】:R: Getting env_get_list error when trying to apply lazy_dt in order to use dtplyrR:尝试应用lazy_dt以使用dtplyr时出现env_get_list错误
【发布时间】:2021-06-28 13:13:07
【问题描述】:

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

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

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

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

但是,即使我基本上遵循了与演示中完全相同的语法,代码也无法正常工作。

这里是一些示例代码,使用了我在主代码中导入的库,并且使用了 iris 数据集。它在 print 和 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)

【问题讨论】:

  • 此代码适用于我的 R 4.0 安装。
  • @Waldi ... 很有趣。我想知道这是否与我的软件包的安装/加载方式有关?我试过重新安装它们,但没有帮助。加载包时收到此消息。 “您在 dplyr 之后加载了 plyr - 这可能会导致问题。如果您需要 plyr 和 dplyr 中的函数,请先加载 plyr,然后加载 dplyr: library(plyr); library(dplyr)” 最初显示的是另一个说 dplyr 0.85 或其他东西已经加载,但 dtplyr 需要 dplyr v1.0.3 或更高版本,尽管我多次重新安装包。

标签: r dplyr data.table dtplyr


【解决方案1】:

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

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

【讨论】:

  • 谢谢 - 我已经有了 v1.14.0 的 data.table。我最终卸载了所有用户库包并只重新安装了我需要的那些。这似乎奏效了。我猜肯定发生了某种冲突。 Dplyr v0.8.5 安装在系统库中,所以我不知道它是否以某种方式覆盖了用户库版本。
猜你喜欢
  • 2020-07-20
  • 1970-01-01
  • 2016-06-04
  • 2020-06-24
  • 2014-02-05
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多