如何在R中保存大型数据框并快速加载?

3

我目前正在一个关于从维基百科FR的Acadie门户提取定性和定量(统计)数据的项目中工作。总共有1905个条目需要处理,其中包含16个变量。

每次使用以下代码加载所有统计数据时,需要一些时间才能加载完毕。 有没有一种方法可以将这个数据框保存在我的电脑上,并在将来快速加载它,同时保持其组织结构不变?

# 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(.)))

这给了我一个可行的数据框,看起来像这样:

enter image description here

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


似乎你在这里使用的某些东西需要一个未在语法中加载的包。 - costebk08
1个回答

3

您可以轻松地将其序列化:

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

然后可以这样反序列化:

readr::read_rds("pageInfo_df.Rds")

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

2
这些仅仅是对基本R函数saveRDSreadRDS的包装器,它们完全可以正常工作;如果你只是保存/读取rds文件,那么真的没有必要依赖于一个软件包。 - joran
1
太好了!非常感谢。 - Judith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接