我在R中做了一些计算,需要先预测内存使用情况。
一个数字占用8个字节:
a <- data.frame(a=rnorm(10000000))
gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 218314 11.7 460000 24.6 350000 18.7
Vcells 10402305 79.4 15379586 117.4 10408785 79.5
10,000,000 * 8字节确实等于80Mb
但是,如果我将此数据帧转换为数字,则内存使用率会高得多,转换为数字过程中的最大内存使用量也非常高。
a <- sapply(a, as.numeric)
gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 218918 11.7 9601876 512.8 10219029 545.8
Vcells 14532255 110.9 61311656 467.8 73533764 561.1
为什么转换为数字后数据框的大小(内存)会更高?当rnorm(。)的输出已经是数字时,我们可以用class(rnorm(1))来检查它。
如何预测转换过程中将使用多少内存(a,as.numeric)?