Tôi dường như không thể hiểu nơi R lưu dữ liệu cho ecdf
. Dưới đây là một số mã để minh họa điều này:`ecdf` lưu đối tượng của nó ở đâu? (và làm thế nào để đo lường nó?)
> 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...
>
Nếu kích thước của y nhỏ, nghĩa là dữ liệu được lưu ở đâu đó. Nó rõ ràng là không được lưu trong x (khi tôi gỡ bỏ nó).
- Có thể trong một số môi trường, nhưng làm cách nào chúng tôi truy cập? Vậy dữ liệu này được lưu ở đâu và nó có thể được truy cập như thế nào?
- Điều này sẽ ảnh hưởng thế nào đến memory.limit()? (tức là: giới hạn bộ nhớ đệm hoặc bộ nhớ khi chạy các quy trình R)
'pryr :: compare_size (y)' cho bạn biết rằng nó lớn hơn nhiều so với ước tính 'cơ sở'. Các hàm 'pryr' khác có thể cho bạn biết nơi mà nó nghĩ rằng có các con trỏ tới các biến môi trường không được tính bằng một lệnh gọi trực tiếp đến' object.size'. – tchakravarty
Thử chạy 'eapply (môi trường (y), object.size)'. – nrussell
@nrussell Điều này đưa ra ước tính thấp hơn một chút so với 'pryr :: object_size' vì' ls (environment (y)) 'không tìm thấy' .approxfun', mà 'codetools :: findGlobals' làm. – tchakravarty