Я не могу понять, где R сохраняет данные для ecdf
. Вот код, чтобы проиллюстрировать это:Где: `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...
>
Если размер у мал, это означает, что данные сохраняются где-то. Очевидно, что он не сохраняется в x (поскольку я удалил его).
- Возможно, это в какой-то среде, но как бы получить доступ к ней? Итак, где эти данные сохраняются и как их можно получить?
- Как бы это повлияло на memory.limit()? (т.е .: пределы кэширования или памяти запущенных процессов R)
'pryr :: compare_size (y)' говорит вам, что он намного больше оценок 'base'. Другие функции 'pryr' могут сказать вам, где он думает, что есть указатели на переменные среды, которые не учитываются прямым вызовом' object.size'. – tchakravarty
Попробуйте запустить 'eapply (environment (y), object.size)'. – nrussell
@nrussell Это дает немного более низкую оценку, чем 'pryr :: object_size', потому что' ls (environment (y)) 'не находит' .approxfun', который 'codetools :: findGlobals' делает. – tchakravarty