R语言 tidyverse系列 学习笔记(系列6)数据分析 之 写入 导出 多个文件

mypath = "/User/sample_files"
list.files(path = my_pah, full.names = TRUE)

# 筛选出 _+数字+dot+csv 结尾的文件
list.files(path = my_pah, pattern = "_\\d.csv$")

my_file_dir = list.files(path = my_pah, pattern = "_\\d.csv$", full.names = TRUE)

append all files to a dataframe

method 1:for loop



# 先创建一个空的 data frame 文件
my_df = NULL

for ( i in 1:length(my_file_dir)){
my_df = rbind(my_df, read.csv(file = my_file_dir[i]))
}
# row bind

my_df

R 中尽量避免使用 for loop

method 2:dplyr包 lapply()

my_df_list = lapply(X = my_file_dir, FUN = read.csv) 
# 用列表的形式展示每个文件里的信息

my_df2 = do.call(rbind.data.frame, my_df_list)
# rbind.data.frame 是一个基础 function
# 每一个 file 都是一个单独的 dataframe,先来提取每个文件的命名
my_filename = gsub(".csv", "", list.files(path = my_pah, pattern = "_\\d.csv$", full.names = FALSE))
# list.file 返回的结果带有文件后缀,用 gsub 去掉后缀
# gsub(想取代什么,用什么取代,对谁)
# assign()用来命名的function

for (i in 1:length(my_filename)) assign(my_filename[i], read.csv(my_file_dir))

导出文件,把多个不同的 dataframe 放到一个 excle 文件里

install.packages("openxlsx")
library(openxlsx)

my_worksheet = list( "sheeta" = C02,
		             "sheetb" = cars,
		     		 "sheetc" = iris )

# C02, cars, iris 是 R 里自带的三个数据集,它们的 shape 是不一样的

write.xlsx(my_worksheet, file = "/User/sample_folder/my_excel_book.xlsx", overwrite = TRUE)

# write.xlsx(对象,保存路径,是否覆盖相同名字的文件)
# 回到用 lapply 函数生成的 my_df_list 里,这是一个 dataframe 列表框架
# names(my_df_list) <- c("name1", "name2", ...) 如果不喜欢之前的名字,可以再写入前修改名字

write.xlsx(my_df_list, file = "/User/sample_folder/my_df_list.xlsx", overwrite = TRUE)

你可能感兴趣的:(r语言,数据分析,tidyverse,dplyr)