Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:文件的大小。file.info()$size和object.size()之间有什么区别?_R_File Handling - Fatal编程技术网

R:文件的大小。file.info()$size和object.size()之间有什么区别?

R:文件的大小。file.info()$size和object.size()之间有什么区别?,r,file-handling,R,File Handling,我想知道R中文件的大小。我应该使用file.info(pathtodata)$size还是object.size(pathtodata) (或其他解决方案?) 它们之间有什么区别 谢谢大家! 通常object.size()应该大于磁盘上的文件大小,因为R对象将具有与其关联的元数据,这些元数据会占用额外的内存-请参阅。除此之外,不同的对象类将具有不同的内存占用: write.csv( matrix(1:1000), file="~/tmp/foo.csv", row.names=FAL

我想知道R中文件的大小。我应该使用
file.info(pathtodata)$size还是object.size(pathtodata)
(或其他解决方案?)
它们之间有什么区别


谢谢大家!

通常
object.size()
应该大于磁盘上的文件大小,因为R对象将具有与其关联的元数据,这些元数据会占用额外的内存-请参阅。除此之外,不同的对象类将具有不同的内存占用:

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
write.csv(
矩阵(1:1000),
file=“~/tmp/foo.csv”,
row.names=FALSE)
##
对象大小(df)
#4672字节
R> 对象大小(mat)
#4464字节
R> file.info(“~/tmp/foo.csv”)$size
#[1] 3898
R> 系统(“stat~/tmp/foo.csv”)
#文件:'/home/nr07/tmp/foo.csv'
#大小:3898块:8 IO块:4096常规文件


在上面的示例中,
data.frame
矩阵
占用更多内存,即使它们是由相同的底层数据构建的;这两个对象都比文件本身在磁盘上占用更多的空间。

通常
object.size()
应该大于磁盘上文件的大小,因为R对象将具有与它们相关联的元数据,这些元数据会占用额外的内存-请参阅。除此之外,不同的对象类将具有不同的内存占用:

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
write.csv(
矩阵(1:1000),
file=“~/tmp/foo.csv”,
row.names=FALSE)
##
对象大小(df)
#4672字节
R> 对象大小(mat)
#4464字节
R> file.info(“~/tmp/foo.csv”)$size
#[1] 3898
R> 系统(“stat~/tmp/foo.csv”)
#文件:'/home/nr07/tmp/foo.csv'
#大小:3898块:8 IO块:4096常规文件


在上面的示例中,
data.frame
矩阵
占用更多内存,即使它们是由相同的底层数据构建的;这两个文件都比文件本身在磁盘上占用更多的空间。

您是在询问存储在硬盘上的文件的大小,还是加载到R时需要的大小?我需要存储在硬盘上的大小。这就是区别吗?据我所知-是的,这就是区别。请注意,如果您将路径作为字符串传递到object.size,那么它告诉您的是字符串在R中占用了多少内存。
object.size(“path/to/data”)
是字符串“path/to/data”(120字节)的大小.您是在询问存储在硬盘上的文件大小,还是加载到R时需要的文件大小?我需要存储在硬盘上的文件大小。这就是区别吗?据我所知-是的,这就是区别。请注意,如果将路径作为字符串传递到object.size,那么它告诉您的是字符串在R中占用的内存量。
object.size(“path/to/data”)
是字符串“path/to/data”(120字节)的大小。