R中的小文件使用RAM

时间:2017-05-24 12:26:28

标签: r csv ram xlsx

我正在尝试在R中打开163MB .xlsx文件。

library(openxlsx)
df <- read.xlsx(xlsxFile = "df.xlsx", sheet = 1, colNames = T)

这样做这个小文件(相对较小)使用笔记本电脑上的所有8GB RAM。 我有这个文件的CSV版本,但由于在其中一个列中使用,;使用CSV不是一个选项如何发生这种情况,因为我知道我最近加载了一个kaggle文件(一个0.5GB的csv)进入R并仍然使用我的笔记本电脑浏览互联网? 编辑:pryr::object_size(df)

的RAM使用量+输出

enter image description here

3 个答案:

答案 0 :(得分:1)

您是否尝试过readxl package https://blog.rstudio.org/2017/04/19/readxl-1-0-0/

read_xlsx(path, sheet = NULL, range = NULL, col_names = TRUE,
col_types = NULL, na = "", trim_ws = TRUE, skip = 0, n_max = Inf,
guess_max = min(1000, n_max))

答案 1 :(得分:1)

您也可以将其作为制表符分隔(read.csv(..., sep="\t"))阅读,或将其另存为.txt文件,并将其作为制表符分隔。

答案 2 :(得分:1)

openxlsx看起来这是(或至少是)问题。这个Github问题描述了文件大小膨胀的问题,并提出了一个解决方案(使用开发版本):https://github.com/awalker89/openxlsx/issues/161

所以,潜在的解决方案:

  • 试用openxlsxdevtools::install_github("awalker89/openxlsx")
  • 的开发版本
  • 根据@Ajay Ohri的建议,请尝试使用readxl包。
  • 加载文件并将其另存为save()saveRDS()
  • 的二进制R文件
  • 使用.csvreadr::read_csv()的{​​{1}}文件再试一次;两者都比基础R data.table::fread()