0
我想知道R中的文件大小。我應該使用
file.info(pathtodata)$ size或object.size(pathtodata)?
(或其他解決方案?)
它們之間有什麼區別?
謝謝!
我想知道R中的文件大小。我應該使用
file.info(pathtodata)$ size或object.size(pathtodata)?
(或其他解決方案?)
它們之間有什麼區別?
謝謝!
一般來說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
更多的內存,即使它們是從相同的基礎數據構成;並且這兩個佔用的空間比磁盤上的文件本身更多。
你問的是存儲在硬盤上的文件大小還是加載到R時需要的大小? – Dason
我需要存儲在硬盤上的大小。這是區別嗎? –
據我所知 - 是的,這就是區別。請注意,如果您將路徑傳遞給object.size作爲字符串,那麼它告訴您的是該字符串在R中佔用了多少內存。 – Dason