用R脚本打开文件夹,然后识别一个文件,重命名它,并读取它。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用R脚本打开文件夹,然后识别一个文件,重命名它,并读取它。相关的知识,希望对你有一定的参考价值。

我最近学会了用R编码,我算是处理了文件中的数据,但我无法让它操作文件本身。我的问题是这样的。

我想在我的工作目录下连续打开以下文件: "Laurent/R",其中的3个文件夹("gene_1", "gene_2", "gene_3").

在每个文件夹中,我想把一个特定的.csv文件(包含特定单词 "Cq "的文件)重命名为 "gene_x_Cq"(然后把这3个重命名的文件移到一个新的文件夹中(有必要吗?))。

我希望能够先后打开这3个.csv文件(我想是用read.csv)来处理其中的数据。我看过不同的函数,如 list.file, unlist, file.rename 但我确信它们是适当的,我不能找出如何在我的情况下使用它们。(我使用的是Mac)ThanksLaurent

答案

这里有一个潜在的解决方案。如果有不懂的地方,就喊出来问吧!

setwd("Your own file path/Laurent")
library(stringr)

# list all .csv files
csvfiles <- list.files(recursive = T, pattern = "\\.csv")
csvfiles

# Pick out files that have cq in them, ensuring that you ignore uppercase/lowercase
cq.files <- csvfiles[str_detect(csvfiles, fixed("cq", ignore_case = T))]

# Get gene number for both files - using "2" here because gene folder is at the second level in the file path
gene.nb <- str_sub(word(cq.files, 2, 2, sep = "/"), 6, 6)
gene.nb

# create a new folder to place new files into
dir.create("R/genefiles")

# This will copy files, not move them. To move them, use file.rename - but be careful, I'd try file.copy first.
cq.files <- file.copy(cq.files,
                        paste0("R/genefiles/gene_", gene.nb, "_", "Cq", ".csv"))

# Now to work with all files in the new folder
library(purrr)
genefiles <- list.files("R/genefiles", full.names = T)

# This will bring in all data into one dataframe. If you want them brought in as separate dataframes,
# use something like gene1 <- read.csv("R/genefiles/gene_1_Cq.csv")
files <- map_dfr(genefiles, read.csv)

以上是关于用R脚本打开文件夹,然后识别一个文件,重命名它,并读取它。的主要内容,如果未能解决你的问题,请参考以下文章

如何批量识别图像中的文字并对图片进行识别的文字图片文件重命名,也可以识别后更改文件夹也支持多级目录

如果文件存在,Powershell 移动项目重命名

bat脚本照片复制重命名?

文件夹重命名显示另一个程序正在打开

我用数码相机拍了风景,然后复制到电脑里,可是我重命名后,属性就变成了文件,怎么办?

Powershell脚本过滤文件并使用奇偶数(从1到2)重命名文件]]