在 setwd() 中循环批量读取文件夹,格式化 dfs & write.csv() 到不同的文件夹 R
loop through batch read folders in setwd(), format dfs & write.csv() to different folder R
我有一些文件夹,每个文件夹中有 4 个 .csv 文件。目前我正在批量读取文件夹中的.csv文件:
setwd("/Users/Drive/MS/Ma/Ec/Effort_variation_Ec/MES1/")
ecosmpr <-
list.files(pattern = "*.csv") %>%
map_df(~read_csv(.))
ecosmpr=data.frame(ecosmpr)
将文件夹中的4个csv作为一个文件批量读取后data.frame,我需要做一些格式化:
ecosmpr1=ecosmpr[,-c(2:13)]
dim(ecosmpr1)
ecosmpr1=ecosmpr1 %>%
row_to_names(row_number = 1)
names(ecosmpr1)=rev(c("detritus","phyto","peri","zoops","amphipods","inverts","leucisids","lns","yct5plus","yct4","yct3","yct2","yctyoy","lkt5plus","lkt34","lkt2","lkt7mo1yo",
"lktyoy","years"))
然后我想将格式化的 data.frame 导出到 csv,但在不同的位置:
write.csv(ecosmpr1,"/Users/Drive/MS/Ma/Ec/Effort_variation_Ec/ecosmpr1_partialformat.csv",row.names = FALSE)
我的问题是我需要遍历第一个 setwd(MESXX) 重命名每个“ecosmprXX”并导出每个“ecosmprXX_partialformat.csv”我什至在启动此循环时遇到问题。我的文件夹命名约定是 MESXX(其中 XX 是数字,1:30),数据框是 ecosmprXX(其中 XX 是数字,1:30),导出的 .csv 是 ecosmprXX_partialformat.csv (其中 XX 是数字,1:30)。我有 30 个不同的文件夹,所以不循环执行此操作效率低下。
这应该可以解决问题:
library(tidyverse)
library(janitor)
new_col_names <- rev(c("detritus","phyto","peri","zoops","amphipods","inverts","leucisids","lns",
"yct5plus","yct4","yct3","yct2","yctyoy","lkt5plus","lkt34","lkt2",
"lkt7mo1yo", "lktyoy","years"))
for (i in 1:30) {
setwd(paste0("/Users/Drive/MS/Ma/Ec/Effort_variation_Ec/MES", i, "/"))
ecosmpr <- list.files(pattern = "*.csv") %>%
map_df(~read_csv(.x))
ecosmpr <- ecosmpr %>%
select(-c(2:13)) %>%
row_to_names(row_number = 1)
names(ecosmpr) <- new_col_names
output_file <-
paste0("/Users/Drive/MS/Ma/Ec/Effort_variation_Ec/ecosmpr", i, "_partialformat.csv")
write.csv(ecosmpr, output_file, row.names = FALSE)
}
我有一些文件夹,每个文件夹中有 4 个 .csv 文件。目前我正在批量读取文件夹中的.csv文件:
setwd("/Users/Drive/MS/Ma/Ec/Effort_variation_Ec/MES1/")
ecosmpr <-
list.files(pattern = "*.csv") %>%
map_df(~read_csv(.))
ecosmpr=data.frame(ecosmpr)
将文件夹中的4个csv作为一个文件批量读取后data.frame,我需要做一些格式化:
ecosmpr1=ecosmpr[,-c(2:13)]
dim(ecosmpr1)
ecosmpr1=ecosmpr1 %>%
row_to_names(row_number = 1)
names(ecosmpr1)=rev(c("detritus","phyto","peri","zoops","amphipods","inverts","leucisids","lns","yct5plus","yct4","yct3","yct2","yctyoy","lkt5plus","lkt34","lkt2","lkt7mo1yo",
"lktyoy","years"))
然后我想将格式化的 data.frame 导出到 csv,但在不同的位置:
write.csv(ecosmpr1,"/Users/Drive/MS/Ma/Ec/Effort_variation_Ec/ecosmpr1_partialformat.csv",row.names = FALSE)
我的问题是我需要遍历第一个 setwd(MESXX) 重命名每个“ecosmprXX”并导出每个“ecosmprXX_partialformat.csv”我什至在启动此循环时遇到问题。我的文件夹命名约定是 MESXX(其中 XX 是数字,1:30),数据框是 ecosmprXX(其中 XX 是数字,1:30),导出的 .csv 是 ecosmprXX_partialformat.csv (其中 XX 是数字,1:30)。我有 30 个不同的文件夹,所以不循环执行此操作效率低下。
这应该可以解决问题:
library(tidyverse)
library(janitor)
new_col_names <- rev(c("detritus","phyto","peri","zoops","amphipods","inverts","leucisids","lns",
"yct5plus","yct4","yct3","yct2","yctyoy","lkt5plus","lkt34","lkt2",
"lkt7mo1yo", "lktyoy","years"))
for (i in 1:30) {
setwd(paste0("/Users/Drive/MS/Ma/Ec/Effort_variation_Ec/MES", i, "/"))
ecosmpr <- list.files(pattern = "*.csv") %>%
map_df(~read_csv(.x))
ecosmpr <- ecosmpr %>%
select(-c(2:13)) %>%
row_to_names(row_number = 1)
names(ecosmpr) <- new_col_names
output_file <-
paste0("/Users/Drive/MS/Ma/Ec/Effort_variation_Ec/ecosmpr", i, "_partialformat.csv")
write.csv(ecosmpr, output_file, row.names = FALSE)
}