我有一个复杂的问题。我有文件列表(2套,每套48个文件)。一个从“ MetaXcan”开始,另一个从“结果”开始,如下所示
One set:
MetaXcan-Adipose_Subcutaneous-within-indexSnpRegion-500-Noduplicates.csv
MetaXcan-Adipose_Visceral_Omentum-within-indexSnpRegion-500-Noduplicates
Second set:
results-gtex_v7_Adipose_Subcutaneous_imputed
results-gtex_v7_Adipose_Visceral_Omentum_imputed
我想将第一组文件中的基因与第二组文件中的相应基因进行比较(文件名均包含相同的组织名称),并将两个文件中相同的行合并为第三数据帧。这意味着最后我应该有48个新文件,其中包含两个文件中共有的基因。在R中怎么可能?
第一组中的文件看起来像
Gene.stable.ID Gene.stable.ID.version Chromosome.scaffold.name Gene.start..bp. Gene.end..bp. Gene.name
ENSG00000116213 ENSG00000116213.11 1 3547331 3569325 WRAP73
第二组中的文件如下:
gene gene_name zscore effect_size pvalue var_g pred_perf_r2 pred_perf_pval pred_perf_qval n_snps_used n_snps_in_cov n_snps_in_model
ENSG00000205352.6 PRR13 -5.1058947 -0.106277196 3.29E-07 0.140082139 0.204794849 8.65E-19 NA 31 33 33
因此,结果是我需要从第一个集合中提取具有相同“ gene.stable.ID.version”的行,并从第二个集合中提取具有“ gene”的行。
我认为这些步骤包括;
1)在两个单独的列表中读取每个集中的所有文件名2) 阅读两个列表中都存在的所有文件3)比较 文件名,只要找到相同的文件名,就比较基因 从第一集到第二集并提取相关行?
是否在正确的管道之上?我已经阅读了列表中的文件名,但是当我尝试读取列表中的所有文件时,它遇到了错误。我被困在开始:(代码是:
GinW <- list.files(path = ".", pattern = "^MetaXcan" )
MetaResults <- list.files(path = ".", pattern = "^results")
out <- data.frame()
for(i in 1:2)
{
GinW_files <- (read.csv(GinW[i]))
MetaResults_files <- (read.csv(MetaResults[i]))
x1 <- MetaResults_files[which(MetaResults_files$gene == GinW_files$Gene.stable.ID.version), ]
}