在循环中保存数据帧列表
Posted
技术标签:
【中文标题】在循环中保存数据帧列表【英文标题】:save list of data frames in a loop 【发布时间】:2022-01-20 04:40:53 【问题描述】:我有一个需要循环并保存输出的数据集列表。分配的名称属于字符向量。例如:
list_data <- mtcars %>% group_split(cyl)
names_vector <- c("low", "medium", "high")
# this is what I am doing
low <- list_data[[1]]
medium <- list_data[[2]]
high <- list_data[[3]]
分配的名称属于字符向量,需要按顺序排列。列表中的数据集数量与names_vector
的长度匹配。但这需要使用循环或一些 purr/dplyr 函数进行迭代。
谢谢
【问题讨论】:
【参考方案1】:这是许多问题的重复。您可以使用 assign
或使用 Zealot 软件包中的 %<-%
。
library(zeallot)
c(low, medium, high) %<-% list_data
# Alternative:
names(list_data) <- c("low", "medium", "high")
mapply(list_data, names(list_data), FUN = \(x, name)assign(name, x, envir = globalenv()))
【讨论】:
【参考方案2】:无需循环,您可以重命名列表中的数据框,
names(list_data) <- names_vector
然后将每个数据帧分离到环境中,
list2env(list_data,envir=.GlobalEnv)
【讨论】:
names(list_data) <- names_vector
以上是关于在循环中保存数据帧列表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 R 中使用带有 ggpie 函数的循环并在数据帧之后保存文件名?