首页 > 解决方案 > 将合并文件的列命名为源文件来自的文件夹名称

问题描述

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

因此,我能够将不同的文本文件组合成一个 .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 的经验,所以我不知道该怎么做。

非常感谢您提前提供的帮助!

标签: rfilenamesdirectorynaming

解决方案


线

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

应该:

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

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

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

names(listData) <- basename(dirname(fileList))

推荐阅读