在data.frame的列上重写%%

时间:2012-11-22 17:22:39

标签: r

我遇到这样的情况:

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(...)           

现在,我想对DF1的一列使用简单代码的“逻辑”,对于DF1的所有列,而不是一个接一个地为了获得所需的输出。 怎么做到这一点?还有另一种最简单的方法吗? 非常感谢提前!

1 个答案:

答案 0 :(得分: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