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