r - 将合并文件的列命名为源文件来自的文件夹名称
问题描述
我在 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 的经验,所以我不知道该怎么做。
非常感谢您提前提供的帮助!
解决方案
线
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))
推荐阅读
- python - 如何每小时自动运行网络爬虫脚本?
- python - 用 Python 编写 Discord 机器人 - 如何让机器人重复图像?
- python - 使用具有 GPU 支持的特定版本的 Tensorflow 的最强大的方法
- r - 如何在 R Markdown 中添加 QQ 图?
- html - 将图像上的数字对齐到右上角或图像顶部
- ffmpeg - 如何使用 FFMPEG 多 GPU 进程
- postgresql - Linux中的postGIS:无法打开dbf文件
- reactjs - 用 Yarn 创建 React
- mysql - SQL - 两个表之间的多重关系
- python - 指定 Python 列表的默认偏移量