问题背景:我需要处理“test”文件夹里的20个表格,其中肺癌(LC)表格10个,癌旁(Adjac)表格10个,也就是10对表格,如图1。
图1
每个表格的第一列(列名为“ab”)是很多基因名称,如图2。
图2
需求或想实现的目标:
1、我想批量读取这20个表格;
2、重命名20个表格的第一列,也就是将“ab”改为“pair_ab”;
3、将相同细胞所在表格(例如:Adjac_1-CD8-Naive-T.csv和LC_1-CD8-Naive-T.csv这一对表格,如图3)的第一列合并、去除重复、保存为新表格;
图3
尝试一、以第一对表格进行试验处理,代码如下:
1. #设置工作目录,注意不要有汉字和中文符号2. setwd("C:\\Users\\iCPU\\Desktop\\test")3. #读取基因对表格4. #癌5. LC_1_CD8_Naive_T_GenePair <- read.csv("LC_1-CD8-Naive-T.csv")6. colnames(LC_1_CD8_Naive_T_GenePair)[1] <- "pair_ab"7. #癌旁8. Adjac_1_CD8_Naive_T_GenePair <- read.csv("Adjac_1-CD8-Naive-T.csv")9. colnames(Adjac_1_CD8_Naive_T_GenePair)[1] <- "pair_ab"10. 11. #合并癌和癌旁的基因对,取并集,重复的基因对只保留一个12. Total_1_CD8_Naive_T_GenePair <- data.frame(union(LC_1_CD8_Naive_T_GenePair$pair_ab, Adjac_1_CD8_Naive_T_GenePair$pair_ab))13. colnames(Total_1_CD8_Naive_T_GenePair)[1] <- "GenePair"14. write.csv(Total_1_CD8_Naive_T_GenePair, "Total_1_CD8_Naive_T_GenePair.csv", row.names = FALSE)15. #成功第一对表格运行成功,如图4、5:
图4
图5
尝试二、批量读取这20个(10对)表格,用到了for循环,注意仅仅只能够批量读取表格,不能区分癌LC和癌旁Adjac,代码如下:
1. #将当前文件夹“test”里的文件名都放入变量“CellName_csv”中2. CellName_csv <- dir()3. #建立for循环用于批量读取数据表4. for (i in 1:length(CellName_csv)) {5. assign(paste0("CellName_GenePair_", i), read.csv(CellName_csv))6. }7. #由此成功读取了20个表格,分别是CellName_GenePair_1、CellName_GenePair_2、...... 、CellName_GenePair_20我无法实现的内容:
1、我不能在上面for循环的代码里,批量对已经读取的表格第一列列名进行重命名,代码如下:
错误截图(或):
图6
图7
图8
2、既然不能用for循环批量重命名所有表格第一列,那也无法合并每一对表格,去重复、以及保存。
总结:我不知道在for循环中,如何正确地输入数据表变量:CellName_GenePair_i,然后对这20个表格进行批量的,我想要的常规操作。另外,我其实需要处理不止20个表格,而是2000个表格,每个表格里基因名称也有20384个,但只有先知道如何在for循环里调取已经批量读取的数据表,才能继续进行下一步操作,可是在对这些表格进行列重命名时,就由于变量填写的不对而出错。
求解疑答惑,万分感激!


雷达卡





京公网安备 11010802022788号







