如何在R中以CSV文件的名称命名列表中的 Dataframe ?

7cwmlq89  于 2023-04-18  发布在  其他
关注(0)|答案(2)|浏览(112)

我有一个名为“Results”的文件夹,其中包含CSV文件。这些文件的命名方案为“Sim_Results_x.csv”,其中x是第n次模拟。我希望将这些文件制作成 Dataframe 列表,这些 Dataframe 以读取它们的文件命名。例如,我希望在 Dataframe 列表中将Sim_Results_1.csv命名为Sim_Results_1。而不是1。我尝试了下面的代码,但不是在文件之后命名dataframe,而是在文件之后命名第一列,所有其他列都命名为“NA”。我该如何解决这个问题?

#get list of names of all files in results folder
filenames <- list.files("Results", pattern="*.csv", full.names=TRUE)
#sort them in numeric order
filenames <- mixedsort(filenames)
#combine into list of dataframes
ldf <- lapply(filenames, function(x) {
  name <- tools::file_path_sans_ext(basename(x))
  df <- read.csv(x)
  names(df) <- name
  # Return dataframe
  df
})
7eumitmz

7eumitmz1#

可以使用基本的R setNames()函数,关键是要将名称应用于列表,而不是列表中的每个项。

ldf <- lapply(filenames, read.csv) |>
    setNames(
        tools::file_path_sans_ext(basename(filenames))
    )
lo8azlld

lo8azlld2#

使用Map/read.csv,然后编辑列表名称,如最后一行所示。

library(tools)
ldf <- Map(read.csv, filenames)
names(ldf) <- file_path_sans_ext(basename(names(ldf))

相关问题