将列表元素保存到 R 中的单独 dfs

save list elements into separated dfs in R

我有一个包含 180.000 个元素的列表,每个元素代表有关投资者和特定交易资产的数据。 我想将列表的所有元素保存到名为 df 的单个数据帧中,放入特定文件夹 "dev/test-data/investors-singleass/" ,以便稍后我可以在文件夹

的所有 dfs 上应用特定功能

我的数据列表的结构与此类似

list(`4Z627.004125` = structure(list(investor = c("4Z627", "4Z627", 
"4Z627"), asset = c("004125", "004125", "004125"), datetime = c("2015-05-12", 
"2015-05-28", "2016-08-19"), Avgprice = c(169.4, 168, 162), operation = c(2000, 
1000, -3000), portfolio = c(2000, 3000, 0), last_port = c(0, 
2000, 3000), marketprice = c(169.4, 166.5, 161.75), portprice = c(169.4, 
168.933333333333, 0), G = c(0, 0, 1), gainminus = c(2, 0, 0), 
    numasset = c(5, 8, 13)), row.names = c(NA, -3L), class = c("tbl_df", 
"tbl", "data.frame"))

基本上列表中的每个元素都是一个“投资者”ID 和一个“资产”代码,然后我有多个其他列可以使用

根据

我会这样做
df1 <- list(`4Z627.004125` = structure(list(investor = c("4Z627", "4Z627", 
                                                  "4Z627"), asset = c("004125", "004125", "004125"), 
                                     datetime = c("2015-05-12",   "2015-05-28", "2016-08-19"), 
                                     Avgprice = c(169.4, 168, 162), 
                                     operation = c(2000, 1000, -3000), portfolio = c(2000, 3000, 0),
                                     last_port = c(0,2000, 3000), marketprice = c(169.4, 166.5, 161.75), 
                                     portprice = c(169.4, 
                                                                                                                                                                                                                                                                                                                        168.933333333333, 0), G = c(0, 0, 1), gainminus = c(2, 0, 0), 
                                     numasset = c(5, 8, 13)), row.names = c(NA, -3L),
                                     class = c("tbl_df", "tbl", "data.frame")),
            `4Z628.004128` = structure(list(investor = c("4Z627", "4Z627", 
                                                         "4Z627"), asset = c("004125", "004125", "004125"), 
                                            datetime = c("2015-05-12",   "2015-05-28", "2016-08-19"), 
                                            Avgprice = c(169.4, 168, 162), 
                                            operation = c(2000, 1000, -3000), portfolio = c(2000, 3000, 0),
                                            last_port = c(0,2000, 3000), marketprice = c(169.4, 166.5, 161.75), 
                                            portprice = c(169.4, 
                                                          168.933333333333, 0), G = c(0, 0, 1), gainminus = c(2, 0, 0), 
                                            numasset = c(5, 8, 13)), row.names = c(NA, -3L),
                                       class = c("tbl_df", "tbl", "data.frame")))
library(purrr)
iwalk(df1, ~saveRDS(.x, paste0("dev/test-data/investors-singleass/", .y, '.RData')))

您可以使用

将数据返回到 R 中
library(dplyr)

df <- list.files(path = "dev/test-data/investors-singleass/", pattern = ".RData") %>% 
  map_dfr(readRDS)