【发布时间】:2017-08-28 03:55:52
【问题描述】:
我正在尝试将 R 中 tidyr 包中的 spread() 函数用于具有大约 300 万个观察值的数据框。它返回以下错误消息:
Error : C stack usage 26498106 is too close to the limit
当我运行Cstack_info() 时,它会告诉我
> Cstack_info()
size current direction eval_depth
7969177 15272 1 2
按照this 问题答案中的建议,我尝试通过在终端窗口中运行ulimit -s 32768 并从终端打开Rstudio 来增加堆栈大小。然而,当我尝试这个时,Cstack_info() 的输出没有改变,当我运行我的代码时,我得到了同样的错误消息。在对同一个较早问题的另一个答案之后,我尝试更新 R 和 Rstudio,但也无济于事。我在这里做错了什么?
我在 16 GB 内存的 mac os x 10.12.2 上运行 R 3.3。
【问题讨论】:
-
如果无法避免传播,请慎重考虑。你可能可以而且应该。
-
请不要使用 rstudio 标签,除非您有关于 rstudio 的具体问题。 R 和 rstudio 是独立的软件。
-
感谢@Roland,我编写了不同的代码以避免传播,尽管它读起来很笨拙。有什么理由可以避免普遍传播吗?来自 Stata,我发现在创建新变量时像这样重塑我的数据很方便。
-
R data.frames 针对多行少列进行了优化。大多数 R 函数都需要“长格式”数据帧。