如何使用R将多个csv文件编译成单个xlsx文件?

如何使用R将多个csv文件编译成单个xlsx文件?,r,R,假设我在名为Path的目录中有许多csv文件: abc.csv def.csv xyz.csv 如何将这些文件编译成单个xlsx文件,其中每个csv都成为自己的选项卡?我尝试过使用以下功能,但不幸的是,xlsx中最终只出现了第一个csv: path <- "Path" filenames_list <- list.files(path = path, full.names = TRUE) for (i in 1:length(filenames_list))

假设我在名为
Path
的目录中有许多csv文件:

abc.csv
def.csv
xyz.csv
如何将这些文件编译成单个xlsx文件,其中每个csv都成为自己的选项卡?我尝试过使用以下功能,但不幸的是,xlsx中最终只出现了第一个csv:

path <- "Path"
filenames_list <- list.files(path = path, full.names = TRUE)

for (i in 1:length(filenames_list)) {

  sheet_name <- strsplit(strsplit(filenames_list[i], "/")[[1]][4], "\\.")[[1]][1]
  file_name <- paste0('Path/output.xlsx')
  temp <- read.csv(filenames_list[i])
  write.xlsx(temp, file = file_name, sheetName = sheet_name, row.names = F, append = T)

}

path您可以使用
sapply
-

path <- "Path"
filenames_list <- list.files(path = path, full.names = TRUE)

list_files <- sapply(filenames_list, read.csv, simplify = FALSE)
names(list_files) <- tools::file_path_sans_ext(basename(names(list_files)))

writexl::write_xlsx(list_files, 'data.xlsx')

path您可以使用
sapply
-

path <- "Path"
filenames_list <- list.files(path = path, full.names = TRUE)

list_files <- sapply(filenames_list, read.csv, simplify = FALSE)
names(list_files) <- tools::file_path_sans_ext(basename(names(list_files)))

writexl::write_xlsx(list_files, 'data.xlsx')

path这里有一个可能的
tidyverse
解决方案:

library(openxlsx)
library(tidyverse)

# Make sure your working directory is set to the location where your .csv files are

list.files(pattern = "*.csv") %>% 
  map(., ~read_csv(.)) %>% 
  write.xlsx(., "My Multi-tabbed File.xlsx")

下面是一个可能的
tidyverse
解决方案:

library(openxlsx)
library(tidyverse)

# Make sure your working directory is set to the location where your .csv files are

list.files(pattern = "*.csv") %>% 
  map(., ~read_csv(.)) %>% 
  write.xlsx(., "My Multi-tabbed File.xlsx")

这太棒了。有没有一个简单的方法来命名每个标签后,其csv文件名?这是伟大的。有没有一种简单的方法可以按照每个选项卡的csv文件名命名?