gpt4 book ai didi

r - `ecdf` 在哪里保存它的对象? (以及如何测量它?)

转载 作者:行者123 更新时间:2023-12-04 14:24:28 25 4
gpt4 key购买 nike

我似乎无法理解 R 在哪里保存 ecdf 的数据.下面是一些代码来说明这一点:

> set.seed(2016-10-30)
> x <- rnorm(1e4)
> y <- ecdf(x)
> object.size(x)
80040 bytes
> object.size(y)
3896 bytes
> rm(x)
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 602079 32.2 1168576 62.5 750400 40.1
Vcells 1183188 9.1 299644732 2286.2 750532746 5726.2
> object.size(y)
3896 bytes
> plot(y) # still works...
>

如果 y 的大小很小,则表示数据保存在某处。它显然没有保存在 x 中(因为我删除了它)。
  • 它可能在某些环境中,但我们如何访问它?那么这些数据保存在哪里,如何访问呢?
  • 这将如何影响 memory.limit() ? (即:正在运行的 R 进程的缓存或内存限制)
  • 最佳答案

    在@hadley 的 Advanced R 中有对函数闭包、封闭、执行和调用环境的精彩解释。 .

    对于您的具体示例,如评论中所述,对象的大小及其封闭环境要大得多:

    pryr::compare_size(y)

    您可以使用以下命令查看这需要的对象以及它们的相对大小:
    sapply(codetools::findGlobals(y), function(x) object.size(get(x, environment(y))))

    你可以对最后一个向量求和,看看这确实是 pryr::object_size正在报告(在我的机器上为 164 kB)。

    关于r - `ecdf` 在哪里保存它的对象? (以及如何测量它?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329949/

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