0

私はこのような状況にあります:

DF1:

  "G1"            "G2"  
  SEP11          ABCC1      
  214223_at      ADAM19     
  COPS4          BIK 
  ACE            ALG3
  EMP3           GGH

DF2

  "S1"            "S2"  
  SEP11          0.1858      
  ADAM19         0.131        
  COPS4          0.1143 
  ACE            0.119
  GGH            0.1214

次の出力が必要です。

  "G1"            "S2"        "G2"           "S2"
  SEP11          0.1858      ADAM19         0.131         
  COPS4          0.1143      GGH            0.1214
  ACE            0.119

DF1 の最初の列では、次のコードを試しました。

  DF1 = read.delim("...", header = T)   
  DF2 = read.delim("...", header = T)      
  INT = intersect(DF1$G1, DF2$S1)            
  dx = DF2$S1 %in% int            
  out = DF2[idx]    
  write.table(...)           

ここで、目的の出力を得るために、1 つずつではなく、DF1 のすべての列に対して、DF1 の 1 つの列に対して単純なコードの「ロジック」を適用したいと思います。これはどのように行うことができますか?これを行う別の最も簡単な方法はありますか?よろしくお願いします!

4

1 に答える 1

1

このコマンドは、次の各列に 1 つずつ、データ フレームのリストを返しますDF1

lapply(DF1, function(x) DF2[na.omit(match(DF2[[1]], x)), ])


$G1
     S1     S2
1 SEP11 0.1858
3 COPS4 0.1143
4   ACE 0.1190

$G2
      S1     S2
2 ADAM19 0.1310
5    GGH 0.1214
于 2012-11-22T18:26:36.507 に答える