R:文件的大小。 file.info()$size 和 object.size() 有什么区别?
R: Size of a file. What is the difference between file.info()$size and object.size()?
我想知道 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
占用更多的内存,即使它们是从相同的基础数据构造的;并且这两个占用的空间比文件本身在磁盘上占用的空间多 space。
我想知道 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
占用更多的内存,即使它们是从相同的基础数据构造的;并且这两个占用的空间比文件本身在磁盘上占用的空间多 space。