将合并文件的列命名为源文件来自的文件夹名称

Naming the columns of a merged file equal to the folder name the source file comes from

我在 R 中编写了一个脚本,该脚本将我的具有一列数​​据的文本文件合并到一个 .csv 文件中,其中所有列都在彼此旁边列出。不幸的是,我的分析软件总是以相同的方式标记文本文件,因此所有文本文件都被称为 "List".

因此,我能够将不同的文本文件合并到一个 .csv 文件中。

fileList <- list.files(path = ".", recursive = TRUE, pattern = "DistList.txt", full.names = TRUE)

listData <- lapply(fileList, read.table)

names(listData) <- gsub("DistList.txt","",basename(fileList))

library(tidyverse)
library(reshape2)

bind_rows(listData, .id = "FileName") %>%
  group_by(FileName) %>%
  mutate(rowNum = row_number()) %>%
  dcast(rowNum~FileName, value.var = "V1") %>%
  select(-rowNum) %>%

write.csv(file="Result.csv")

现在,我想更改列名称,使其与文本文件所在文件夹的名称相同。由于我还没有那么多使用 R 的经验,所以我不知道应该怎么做。

非常感谢您提前的帮助!

names(listData) <- gsub("DistList.txt", "", basename(fileList))

应该是:

names(listData) <- gsub("DistList.txt", "", fileList)

因为通过使用 basename 我们将删除所有文件夹,留下文件名 "DistList.txt",并且该文件名将使用 gsub 替换为空字符串“”。

我们实际上可能想要下面的内容,提取最后一个目录,在这种情况下应该给出类似 c("C1.1", "C1.2", ...):

的内容
names(listData) <- basename(dirname(fileList))