【问题标题】:How to save a large dataframe and quickly load it in R? [duplicate]如何保存大型数据框并在 R 中快速加载? [复制]
【发布时间】:2019-12-09 21:02:30
【问题描述】:

我目前正在开展一个项目,以提取有关 Wikipedia FR 中 Acadie 门户的定性和定量(统计)数据。有 1905 个条目和 16 个变量可供使用。

每次我使用以下代码加载所有统计数据时,都需要一些时间来加载。 有没有办法将此 data.frame 保存在我的计算机上并再次加载以供将来快速使用,同时保持其井井有条?

# Basic information ----

library("WikipediR")

# Function
# How to make function outside of apply: https://ademos.people.uic.edu/Chapter4.html#:~:targetText=vapply%20is%20similar%20to%20sapply,VALUE).&targetText=VALUE%20is%20where%20you%20specify,single%20numeric%20value%2C%20so%20FUN.
pageInfo_fun <- function(portalAcadie_titles){
  page_info(language = "fr", 
            project = "wikipedia", 
            page = portalAcadie_titles,
            properties = c("url"),
            clean_response = T, Sys.sleep(0.0001))} # Syssleep to prevent quote violation.

pageInfo_data <- apply(portalAcadie_titles,1, pageInfo_fun)

# Transform into dataframe

library("tidyverse")
pageInfo_df <- data.frame(map_dfr(pageInfo_data, ~flatten(.)))

它为我提供了一个可行的数据框,如下所示:

当我尝试将其保存到 csv,然后使用 ff 包和 read.csv.ffdf() 时,它没有给我一个可行的数据框。它将所有变量和观察结果合并到一个包含 20 000 个变量的观察结果中。

【问题讨论】:

  • 您在这里使用的东西似乎需要一个未在您的语法中加载的包。

标签: r dataframe wikipedia


【解决方案1】:

您可以使用以下方法轻松序列化它:

readr::write_rds(pageInfo_df, "pageInfo_df.Rds")

然后像这样反序列化它:

readr::read_rds("pageInfo_df.Rds")

这应该处理任意复杂度的每个有效 R 对象。

【讨论】:

  • fwiw 这些只是基本 R 函数 saveRDSreadRDS 的包装器,它们工作得很好;如果您所做的只是保存/读取 rds 文件,则确实不需要包依赖项。
  • 效果很好!谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-06-29
  • 2012-12-31
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多