R语言批量读取某路径下文件内容的方法

 更新时间:2022年04月01日 15:41:53   作者:巩翔宇Ibrahimovic  
批量地做就是解放双手地过程,本文主要介绍了R语言批量读取某路径下文件内容的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

R刚入门的时候,能够正确读取单个文件就觉得小有成就,随着时间的积累,单一文件地读取已经不能满足需求了,此时,批量地做就是解放双手地过程。

使用for循环把下载地TCGA数据读入R语言并转换成数据框

使用三个for循环来完成,这是第一个for循环。

1. 把所有数据读入在一个文件夹中

dir.create("data_in_one") #创建目标文件夹,也可右键创建
dir("rawdata/") #查看原路径的内容
for (dirname in dir("rawdata/")){  
  ## 1.要查看的单个文件夹的绝对路径
  mydir <- paste0(getwd(),"/rawdata/",dirname)
  ## 2.找到对应文件夹中的文件并提取名称,pattern表示模式,可以是正则表达式
  file <- list.files(mydir,pattern = "*.counts")
  ## 3.当前文件的绝对路径是
  myfile <- paste0(mydir,"/",file)
  ## 4.复制这个文件到目的文件夹
  file.copy(myfile,"data_in_one")  
}

2. 寻找TCGA ID并让文件名称和TCGA ID保持一致。

第二个for循环。文件名称和TCGA ID的对应关系,藏在了metadata中。

metadata <- jsonlite::fromJSON("data/metadata.cart.2021-05-28.json")
metadata_id <- metadata[,c("file_name","associated_entities")]
## 1.准备容器,已经存在,我们把新数据添加在第三列
metadata_id
## 2.循环操作
for (i in 1:nrow(metadata_id)){
  print(i)
  metadata_id[i,3] <- metadata_id$associated_entities[i][[1]]$entity_submitter_id
}
## 重新命名
colnames(metadata_id)[3] <- "TCGA_id"

行排序,为了把文件名称和TCGA_id对应起来。读入的顺序和复制到新路径的顺序不一致,这一步的目的是让其保持一致。

rownames(metadata_id) <- metadata_id[,1]
metadata_id <- metadata_id[files,]

3. 输入文件名并提取文件的第二列(counts列)

#install.packages("data.table")
#构建函数
myfread <- function(files){
  data.table::fread(paste0("data_in_one/",files))$V2
}
## 测试文件
test <- myfread(files[1])

4.1 使用for循环来批量读入并整合到一个数据框。

## 1.创建容器
gene_id <- data.table::fread(paste0("data_in_one/",files[1]))$V1
expr_df <- data.frame(gene_id=gene_id)
## 2.按照列读入
for (i in 1:length(files)){
  print(i)
  expr_df[,i+1] = myfread(files[i])
}

## 增加列名
colnames(expr_df) <- c("gene_id",metadata_id$TCGA_id)

### 意外发现
tail(expr_df$gene_id,10)
### 去掉最后5行
(nrow(expr_df)-5)
expr_df <- expr_df[1:(nrow(expr_df)-5),]
save(expr_df,file = "output/BRCA_RNASEQ_exprdf.Rdata")

4.2 使用lapply + function 模式

1.函数

myfread <- function(files){
  data.table::fread(paste0("data_in_one/",files))$V2
}
### 2.lapply
dd = lapply(files,myfread)
### 3.do.call
expr_df = as.data.frame(do.call(cbind,dd))
### 4.添加名称
colnames(expr_df) = metadata_id$TCGA_id
rownames(expr_df) = data.table::fread(paste0("data_in_one/",files[1]))$V1

到此这篇关于R语言批量读取某路径下文件内容的方法的文章就介绍到这了,更多相关R语言批量读取文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • R语言中aggregate 函数详解

    R语言中aggregate 函数详解

    这篇文章主要介绍了R语言中aggregate 函数的相关资料,aggregate函数是数据处理中常用到的函数,具有强大的功能,可以按照要求把数据打组聚合,然后对聚合以后的数据进行加和、求平均等各种操作,需要的朋友可以参考下
    2023-04-04
  • R语言对Excel文件操作实例

    R语言对Excel文件操作实例

    在本篇文章里小编给大家整理了一篇关于R语言对Excel文件操作实例内容,有兴趣的朋友们可以学习下。
    2021-05-05
  • R语言-因子与向量的转换方式

    R语言-因子与向量的转换方式

    这篇文章主要介绍了R语言-因子与向量的转换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言数可视化Split violin plot小提琴图绘制方法

    R语言数可视化Split violin plot小提琴图绘制方法

    这篇文章主要为大家介绍了R语言数可视化Split violin plot小提琴图绘制方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • 使用R语言绘制3D数据可视化scatter散点图实现步骤

    使用R语言绘制3D数据可视化scatter散点图实现步骤

    这篇文章主要为大家介绍了使用R语言绘制3D数据可视化scatter散点图的实现步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • R语言如何将大型Excel文件转为dta格式详解

    R语言如何将大型Excel文件转为dta格式详解

    这篇文章主要给大家介绍了关于R语言如何将大型Excel文件转为dta格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • R语言绘制Bubble Matrix气泡矩阵图

    R语言绘制Bubble Matrix气泡矩阵图

    这篇文章主要为大家介绍了R语言绘制Bubble Matrix气泡矩阵图的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步
    2022-02-02
  • R语言向量知识点及实例讲解

    R语言向量知识点及实例讲解

    在本篇文章里小编给大家整理的是一篇关于R语言向量知识点及实例讲解内容,有兴趣的朋友们可以学习下。
    2021-03-03
  • R语言基本语法知识点

    R语言基本语法知识点

    在本篇文章里小编给大家整理的是一篇关于R语言基本语法知识点内容,有兴趣的朋友们可以参考学习下。
    2021-03-03
  • RStudio中如何更改R包安装位置浅析

    RStudio中如何更改R包安装位置浅析

    R语言提供了丰富的功能和扩展包来支持各种任务,默认R语言会将安装的扩展包存储在特定的目录中,有时我们希望将这个默认存储路径更改为其他位置,以便更好地组织和管理我们的包,这篇文章主要给大家介绍了关于RStudio中如何更改R包安装位置的相关资料,需要的朋友可以参考下
    2023-09-09

最新评论