0

我有一个非常困难的问题。我有两个这样的data.frames:

data.frame_1(600 列和 100 行):

 COL1   COL2   COL3  ...
  ab     e     jh    ...   
  gb     if    ki    ...    
  uc     kg    al    ...    
  id     mn    ef1   ...    

和 data.frame2(900 列和 1000 行)

 Gene  Samp1   Samp2  Samp3
  ab     1      0      0
  gb     1      1      1
  uc     0     -1      1
  id    -1     -1      1
  e      1      0     -1
  f     -1      1     -1
  if     1      1      0
  kg     0      1     -1
  mn    -1      0      1
  jh    -1     -1     -1
  ki     0     -1      0
  al     0      1     -1

我想要以下输出:

 COL1    Samp1   Samp2   Samp3
  ab      1        0      0
  gb      1        1      1
  uc      0       -1      1
  id     -1       -1      1




 COL2    Samp1   Samp2   Samp3
  e        1       0      -1
  f       -1       1      -1
  if       1       1       0
  kg       0       1      -1

因此,对于 data.frame_1 的每一列,我需要与 data.frame_2 的第一列匹配和子集,然后每个匹配项将保存在不同的单独文件中。

任何人都可以帮助我吗?

提前非常感谢!

4

1 回答 1

3

这其实很简单:

dat1 <- read.table(text = "COL1   COL2   COL3 
   ab     e     jh       
   gb     if    ki        
   uc     kg    al        
   id     mn    ef1   ",header = TRUE,sep = "")
dat2 <- read.table(text=  "Gene  Samp1   Samp2  Samp3
   ab     1      0      0
   gb     1      1      1
   uc     0     -1      1
   id    -1     -1      1
   e      1      0     -1
   f     -1      1     -1
   if     1      1      0
   kg     0      1     -1
   mn    -1      0      1
   jh    -1     -1     -1
   ki     0     -1      0
   al     0      1     -1",header = TRUE,sep = "")

lapply(dat1,function(x) dat2[dat2$Gene %in% x,])

然后你有一个包含结果的数据框列表。就lapply在它上面将每个保存到一个单独的文件中(假设您真的希望每个都保存在磁盘上的文件中)。

于 2013-06-10T15:59:53.393 回答