R语言中读取和处理文件的常用方法

  • Post author:
  • Post category:其他


测试文件放在rawdata/目录下,包含以下内容

我在rawdata下存放了以上文件


目录


1.dir()


2.list.files()


3.dir_ls()


4.整理文件下的内容 ***重要***


①获得包含特定字符串的文件


②获得文件绝对路径


③将文件粘贴至另一个文件夹


④文件夹下的文件可能和表格中的文件排序不一致



1.dir()

dir("rawdata/")
 [1] "001fe63b-06c8-4ca1-861a-3d1dd0fdf5fc" "298e02ea-bc72-48a5-8bfa-af556b7f7487"
 [3] "35d4009c-15ea-4c2f-95f0-7a6f4a1a81ef" "3c4efae8-0a57-43b2-b6fd-c62f1f33da28"
 [5] "3cab7c8c-eb2c-4fa3-8585-647411499927" "4acf525e-207d-4850-a0bb-ba231c7eb69e"
 [7] "5c480d48-8117-48f1-b6d4-c8b420769a43" "5ffa9f1e-0773-486e-ad5b-08f93e90c02c"
 [9] "6d79240b-0e19-4f53-9f8e-cb0141cf43a9" "7da0998c-2cd9-4c22-bf95-0f78f4a0c6dc"
[11] "961d7780-4e63-4901-85d7-7707e7c372fe" "abb7228e-61c4-4e61-9852-6cd1d6f1486f"
[13] "ce1af3d1-6e2b-4615-87e6-9083e4babdf9" "d13061a4-f0c4-4797-8842-62ac30e8f1fb"

或者也可以显示路径(我这里用了Rproj,定位在rawdata所在的位置

dir("rawdata/",full.names = T)
 [1] "rawdata/001fe63b-06c8-4ca1-861a-3d1dd0fdf5fc" "rawdata/298e02ea-bc72-48a5-8bfa-af556b7f7487"
 [3] "rawdata/35d4009c-15ea-4c2f-95f0-7a6f4a1a81ef" "rawdata/3c4efae8-0a57-43b2-b6fd-c62f1f33da28"
 [5] "rawdata/3cab7c8c-eb2c-4fa3-8585-647411499927" "rawdata/4acf525e-207d-4850-a0bb-ba231c7eb69e"
 [7] "rawdata/5c480d48-8117-48f1-b6d4-c8b420769a43" "rawdata/5ffa9f1e-0773-486e-ad5b-08f93e90c02c"
 [9] "rawdata/6d79240b-0e19-4f53-9f8e-cb0141cf43a9" "rawdata/7da0998c-2cd9-4c22-bf95-0f78f4a0c6dc"
[11] "rawdata/961d7780-4e63-4901-85d7-7707e7c372fe" "rawdata/abb7228e-61c4-4e61-9852-6cd1d6f1486f"
[13] "rawdata/ce1af3d1-6e2b-4615-87e6-9083e4babdf9" "rawdata/d13061a4-f0c4-4797-8842-62ac30e8f1fb"

使用pattern参数可以选择特定类型后缀

2.list.files()

list.files("rawdata/")
 [1] "001fe63b-06c8-4ca1-861a-3d1dd0fdf5fc" "298e02ea-bc72-48a5-8bfa-af556b7f7487"
 [3] "35d4009c-15ea-4c2f-95f0-7a6f4a1a81ef" "3c4efae8-0a57-43b2-b6fd-c62f1f33da28"
 [5] "3cab7c8c-eb2c-4fa3-8585-647411499927" "4acf525e-207d-4850-a0bb-ba231c7eb69e"
 [7] "5c480d48-8117-48f1-b6d4-c8b420769a43" "5ffa9f1e-0773-486e-ad5b-08f93e90c02c"
 [9] "6d79240b-0e19-4f53-9f8e-cb0141cf43a9" "7da0998c-2cd9-4c22-bf95-0f78f4a0c6dc"
[11] "961d7780-4e63-4901-85d7-7707e7c372fe" "abb7228e-61c4-4e61-9852-6cd1d6f1486f"
[13] "ce1af3d1-6e2b-4615-87e6-9083e4babdf9" "d13061a4-f0c4-4797-8842-62ac30e8f1fb"

可以看到和dir()的操作差不多

list.files("rawdata/",full.names = T)
 [1] "rawdata/001fe63b-06c8-4ca1-861a-3d1dd0fdf5fc" "rawdata/298e02ea-bc72-48a5-8bfa-af556b7f7487"
 [3] "rawdata/35d4009c-15ea-4c2f-95f0-7a6f4a1a81ef" "rawdata/3c4efae8-0a57-43b2-b6fd-c62f1f33da28"
 [5] "rawdata/3cab7c8c-eb2c-4fa3-8585-647411499927" "rawdata/4acf525e-207d-4850-a0bb-ba231c7eb69e"
 [7] "rawdata/5c480d48-8117-48f1-b6d4-c8b420769a43" "rawdata/5ffa9f1e-0773-486e-ad5b-08f93e90c02c"
 [9] "rawdata/6d79240b-0e19-4f53-9f8e-cb0141cf43a9" "rawdata/7da0998c-2cd9-4c22-bf95-0f78f4a0c6dc"
[11] "rawdata/961d7780-4e63-4901-85d7-7707e7c372fe" "rawdata/abb7228e-61c4-4e61-9852-6cd1d6f1486f"
[13] "rawdata/ce1af3d1-6e2b-4615-87e6-9083e4babdf9" "rawdata/d13061a4-f0c4-4797-8842-62ac30e8f1fb"

3.dir_ls()

属于fs包,直接使用常常报错,最好fs::dir_ls()

有颜色,便于区分不同的文件

显示出子文件

4.整理文件下的内容 ***重要***

R语言中批量复制需要的文件到指定文件夹下

涉及到

①获得包含特定字符串的文件

②获得文件绝对路径

③将文件粘贴至另一个文件夹

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")  
}

④文件夹下的文件可能和表格中的文件排序不一致

例如:

需要按照文件夹中的顺序,重排dataframe中文件名顺序–方便一一对应

### 存储文件读入的顺序
files <- dir("data_in_one")

### 行排序
### 为了把文件名称和TCGA_id对应起来
rownames(metadata_id) <- metadata_id[,1]
metadata_id <- metadata_id[files,]



版权声明:本文为m0_58549466原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。