gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:46:26 24 4
gpt4 key购买 nike

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

dt <- data.table(df)

但是当我调用我的函数时,在调用 data.table() 时,内存使用量会立即跳跃,而 R 只是停止响应。
当我一行一行地以低内存消耗运行时,函数中的代码工作正常。
另外,如果我将 library(data.table) 放在我的函数中,一切都很好。我试图避免将 library(data.table) 放在我的函数中,而是声明依赖项。然而,这种方式似乎有些不对劲。我在 Mac OS X 10.6.8 上运行 R-2.14.0

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

最佳答案

一些没有特定顺序的随机猜测:

尝试仅使用描述中的导入或依赖字段。我认为您也不需要在 NAMESPACE 中导入,但我可能错了。为什么这可以解释内存使用,但不知道。

什么是df ?它在某种程度上是大的还是以某种方式递归或奇怪的?请提供str(df)如果可能的话,告诉我们一些关于它的事情。

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

您的函数调用是否被重复调用?我明白为什么要反复转换 dfdt会耗尽内存,但不是为什么只调用 library(data.table)会很快。

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

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

还有,data.table是哪个版本的你正在用吗? R-Forge 上的 v1.8.1 中有此错误修复(尚未在 CRAN 上):

  • Moved data.table setup code from .onAttach to .onLoad so that it is also run when data.table is simply imported from within a package, fixing #1916 related to missing data.table options.


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

关于R:导入data.table包命名空间,内存消耗无法解释的跳跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10628371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com