在R中将一行与另一行匹配,并将结果写入另一个文件

时间:2017-09-17 06:59:31

标签: r

我有这样的文件

Ind   M1  M2    M3   M4   M5
P1   AA   -/-    GG   CC   TT
P2   TT    AA  GG   TT    CC
1     TT    GG  CC   AA    GG
2     GG   CC   TT   GG   CC
3     AA    TT   GG  CC   TT
4     CC    GG  TT   AA   CC
5      GG   CC  AA   CC   TT

我想检查P1和P2是否匹配M1,如果它们匹配,那么应该选择该列并写入outfile,这样我想继续剩下的列直到M5。我是R的新手,尝试使用嵌套for循环,但无法得到它。 excel非常简单,但问题是我的数据中有超过44k列。如果R将它们降低到16000以下那么我可以在excel中工作以进行进一步的分析。在这方面有谁可以帮助我?任何帮助将受到高度赞赏 提前致谢 此致

1 个答案:

答案 0 :(得分:0)

如果我理解正确你想存储M1的列,如果它们与P1和P2匹配,如果是这种情况,我会这样做:

tmp <- matrix(rep(1,20),nrow = 4, ncol = 5)
tmp <- as.data.frame(tmp)
tmp <- setNames(tmp, letters[1:5])

names_int <- c("a","b", "c")


output <- sapply(names_int, function(x){
if(identical(tmp[[x]], tmp[["d"]]) & identical(tmp[[x]], tmp[["e"]])){
return(tmp[[x]])
}})

其中&#34; d&#34;和&#34; e&#34;将是您的P1和P2,names_int是您要匹配的变量的名称