R:导入 data.table 包命名空间,内存消耗无法解释的跳跃



我在自己的包中使用data.table包,并在NAMESPACE和DESCRIPTION文件中导入data.table命名空间。在我的一个函数中,我使用 data.table 函数将数据帧转换为 data.table

dt <- data.table(df)

但是当我调用我的函数时,在调用 data.table(( 时,内存使用量会立即跳跃,R 会停止响应。当我逐行运行它并且内存消耗低时,函数中的代码工作正常。另外,如果我把库(数据表(放在我的函数中,一切都很好。我试图避免将库(data.table(放在我的函数中并声明依赖关系。但是,似乎出了点问题。我在 Mac OS X 10.6.8 上运行 R-2.14.0

任何人都可以解释一下可能是什么原因,以及我如何解决这个问题(在我的函数中不使用library(data.table((?

一些随机猜测,排名不分先后:

尝试仅使用"说明"中的"导入"或"依赖"字段。我认为您也不需要在命名空间中导入,但我可能是错的。为什么这会解释内存使用,不知道。

什么是df?它是否很大或以某种方式递归或奇怪?如果可能,请提供str(df)告诉我们一些相关信息。

尝试as.data.table(df)data.table(df)快。但听起来你的问题与此不同。

您的函数调用是否被重复调用?我可以看到为什么反复将df转换为dt会耗尽内存,但不知道为什么只调用library(data.table)会这么快。

尝试使用 R --vanilla 启动 R,以确保启动时没有加载.Rdata(可能包括屏蔽data.table的函数(等。如果你已经开发了自己的包,那么某种函数名称冲突,或者包在search()路径上的顺序听起来是合理的。

否则,我们将需要更多信息。我不记得类似的事情发生在我身上,或者以前被报道过。

而且,您使用的是哪个版本的data.table? 在 R-Forge 上的 v1.8.1 中有这个错误修复(尚未在 CRAN 上(:

  • data.table设置代码从.onAttach移动到.onLoad,以便在从包中简单地import data.table时也运行它,修复与缺少data.table选项相关的#1916。

但是,如果您使用的是 CRAN 的 1.8.0,并且正在导入(仅(而不是依赖,那么我希望您会收到有关缺少选项的错误,而不是内存消耗的跳跃。

最新更新