我期望生成大量数据,然后将其捕获 R。如何通过行数、列数和变量类型估计 data.frame 的大小(以及所需的内存)?

例子。

如果我有 10000 行和 150 列,其中 120 是数字,20 是字符串,10 是因子级别,我可以预期的数据框的大小是多少?结果是否会根据列中存储的数据而变化(如 max(nchar(column)) )?

> m <- matrix(1,nrow=1e5,ncol=150) 
> m <- as.data.frame(m) 
> object.size(m) 
120009920 bytes 
> a=object.size(m)/(nrow(m)*ncol(m)) 
> a 
8.00066133333333 bytes 
> m[,1:150] <- sapply(m[,1:150],as.character) 
> b=object.size(m)/(nrow(m)*ncol(m)) 
> b 
4.00098133333333 bytes 
> m[,1:150] <- sapply(m[,1:150],as.factor) 
> c=object.size(m)/(nrow(m)*ncol(m)) 
> c 
4.00098133333333 bytes 
> m <- matrix("ajayajay",nrow=1e5,ncol=150) 
>  
> m <- as.data.frame(m) 
> object.size(m) 
60047120 bytes 
> d=object.size(m)/(nrow(m)*ncol(m)) 
> d 
4.00314133333333 bytes 

请您参考如下方法:

您可以模拟一个对象并使用 object.size 计算用于将其存储为 R 对象的内存估计值。 :

m <- matrix(1,nrow=1e5,ncol=150) 
m <- as.data.frame(m) 
m[,1:20] <- sapply(m[,1:20],as.character) 
m[,29:30] <- sapply(m[,29:30],as.factor) 
object.size(m) 
120017224 bytes 
print(object.size(m),units="Gb") 
0.1 Gb 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!