2015-06-01 12 views
0

我想知道R中的文件大小。我應該使用
file.info(pathtodata)$ sizeobject.size(pathtodata)
(或其他解決方案?)
它們之間有什麼區別?

謝謝!

+0

你問的是存儲在硬盤上的文件大小還是加載到R時需要的大小? – Dason

+0

我需要存儲在硬盤上的大小。這是區別嗎? –

+1

據我所知 - 是的,這就是區別。請注意,如果您將路徑傳遞給object.size作爲字符串,那麼它告訴您的是該字符串在R中佔用了多少內存。 – Dason

回答

1

一般來說object.size()應該大於磁盤上的文件大小,因爲R對象將具有與它們關聯的元數據,佔用額外的內存 - 請參閱Hadley's article here。在此之上,不同的對象類將具有不同的存儲器腳印:

write.csv(
    matrix(1:1000), 
    file="~/tmp/foo.csv", 
    row.names=FALSE) 
## 
df <- read.csv(
    "~/tmp/foo.csv", 
    stringsAsFactors=FALSE) 
mat <- as.matrix(df) 
## 
R> file.info("~/tmp/foo.csv")$size 
#[1] 3898 
R> object.size(df) 
#4672 bytes 
R> object.size(mat) 
#4464 bytes 
R> file.info("~/tmp/foo.csv")$size 
#[1] 3898 
R> system("stat ~/tmp/foo.csv") 
# File: ‘/home/nr07/tmp/foo.csv’ 
# Size: 3898  Blocks: 8   IO Block: 4096 regular file 

在上面的例子中,data.frame佔據比所述matrix更多的內存,即使它們是從相同的基礎數據構成;並且這兩個佔用的空間比磁盤上的文件本身更多。

相關問題