如何将全局环境中的数据以相同的名称自动保存到PC上的文件夹中?

How to save data in global environment with same ending automatically with their names into a folder on PC?

我想自动保存在环境中具有相同名称的单个数据帧,而无需在代码中编写每个数据帧本身的名称。我该怎么做?

library(dplyr)
set.seed(94756)
Data_Date03.03.22Time10.23.45.xlsx <- matrix(sample(seq(-1,100, 0.11),70, replace = TRUE),ncol = 5) 
Data_Date03.03.22Time10.23.45.xlsx <- as.tibble(Data_Date03.03.22Time10.23.45.xlsx)

Data_Date03.03.22Time10.26.36.xlsx <- matrix(sample(seq(-1,100, 0.11),70, replace = TRUE),ncol = 5)  
Data_Date03.03.22Time10.26.36.xlsx <- as.tibble(Data_Date03.03.22Time10.26.36.xlsx)
Data_Date03.03.22Time10.26.36.xlsx[3,1] <- NA
Data_Date03.03.22Time10.26.36.xlsx[6,1] <- NA

Data_Date03.03.22Time10.27.12.xlsx <- matrix(sample(seq(-1,100, 0.11), 70,replace = TRUE),ncol = 5)  
Data_Date03.03.22Time10.27.12.xlsx <- as.tibble(Data_Date03.03.22Time10.27.12.xlsx)
Data_Date03.03.22Time10.27.12.xlsx[4,1] <- NA


data <- list(Data_Date03.03.22Time10.23.45.xlsx, Data_Date03.03.22Time10.26.36.xlsx, Data_Date03.03.22Time10.27.12.xlsx)

我电脑“保存文档”文件夹中的结果应该是: Data_Date03.03.22Time10.23.45.xlsx | Data_Date03.03.22Time10.26.36.xlsx | Data_Date03.03.22Time10.27.12.xlsx | ...作为三个单独的 excel 文档。

提前致谢!

这会在您的工作目录中写入 excel 个文件。

purrr::imap(mget(ls(pattern = '^Data_Date')), writexl::write_xlsx)

如果你想把它写到特定的文件夹,你可以这样做-

purrr::imap(mget(ls(pattern = '^Data_Date')), 
        ~writexl::write_xlsx(.x, paste0('/path/to/folder/', .y)))

解释-

lspattern returns 全局环境中 object 的名称,其名称中包含模式。

ls(pattern = '^Data_Date')
#[1] "Data_Date03.03.22Time10.23.45.xlsx" "Data_Date03.03.22Time10.26.36.xlsx"
#[3] "Data_Date03.03.22Time10.27.12.xlsx"

mget 将创建一个命名的 tibble 列表。 imap 用于将小标题写入 excel 文件,其中 .x 是小标题,而 .y 是 object.

的名称