gpt4 book ai didi

r - 为什么 R 在使用 read.csv() 时会占用这么多内存?

转载 作者:行者123 更新时间:2023-12-02 08:33:11 27 4
gpt4 key购买 nike

我在 Linux 上运行 R(可靠的 kubuntu)。我有一个将近 400MB 的 csv 文件,其中大部分包含数值:

$ ls -lah combined_df.csv 
-rw-rw-r-- 1 naught101 naught101 397M Jun 10 15:25 combined_df.csv

我启动 R,然后 df <- read.csv('combined_df.csv') (我得到一个 1246536x25 数据框、3 个 int 列、3 个 logi、1 个因子和 18 个数字)然后使用 here 中的脚本检查内存使用情况:

R> .ls.objects()
Type Size Rows Columns
df data.frame 231.4 1246536 25

它报告的内存较少有点奇怪,但我想这只是因为 CSV 不是数字数据的有效存储方法。

但是当我检查系统内存使用情况时,top说 R 正在使用我可用 8GB RAM 的 20%。和 ps报告类似:

$ ps aux|grep R
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
naught1+ 32364 5.6 20.4 1738664 1656184 pts/1 S+ 09:47 2:42 /usr/lib/R/bin/exec/R

379MB 数据集需要 1.7Gb RAM。这似乎过分了。我知道 ps isn't necessarily an accurate way of measuring memory usage ,但它肯定不会超出 5 倍?!为什么 R 使用这么多内存?

此外,R 似乎在 gc() 中报告了类似的内容的输出:

R> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 497414 26.6 9091084 485.6 13354239 713.2
Vcells 36995093 282.3 103130536 786.9 128783476 982.6

最佳答案

正如我在上面的评论中所指出的,文档 ?read.csv 中有一个标题为“内存使用”的部分警告说,任何基于 read.table 的内容都可能使用“惊人”的内存量并推荐两件事:

  1. 使用 colClasses 参数指定每一列的类型,并且
  2. 指定 nrows,即使是“轻度高估”。

关于r - 为什么 R 在使用 read.csv() 时会占用这么多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24601704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com