2016-02-14 57 views
0

欲採取以下索引數據幀:應用從一個數據幀的原參數到另一個使用plyr包

sample label       Path 
1  B6_01  B6 zap17KO_data/B6_1_May2015.tsv 
2  B6_02  B6 zap17KO_data/B6_2_May2015.tsv 
3  B6_03  B6 zap17KO_data/B6_3_May2015.tsv 
4  Quad_01 Quad zap17KO_data/Quad_1_May2015.tsv 
5  Quad_02 Quad zap17KO_data/Quad_2_May2015.tsv 
6  Quad_03 Quad zap17KO_data/Quad_3_May2015.tsv 
7 ZAPKODN_01 ZAPKODN  zap17KO_data/ZAPKODN_1.tsv 
8 ZAPKODP_01 ZAPKODP  zap17KO_data/ZAPKODP_1.tsv 
9 ZAPKODP_02 ZAPKODP  zap17KO_data/ZAPKODP_2.tsv 
10 ZAPKODP_03 ZAPKODP  zap17KO_data/ZAPKODP_3.tsv 

和每一通路中的文件的讀取到一個數據幀,並且對於新數據框的每個原始數據,我將擁有一致的樣本和標籤。

我試圖通過讀取索引數據幀列表來做到這一點:

flist <- index$paths 
names(flist) <- index$sample 
db <- ldply(flist, read.delim) 

這裏的問題是,我沒有在DB數據幀中的每個原始標籤,我需要使用「匹配」功能從我想要放棄的權利。

+0

你想在1閱讀每一行這些文件數據幀還是多個? – MaxPD

+0

@maxPD一個數據幀 –

回答

1

事情是這樣的:

res <- 
    do.call(rbind, 
      lapply(1:nrow(index),function(i){ 
      myPath <- index[i, "Path"] 
      mySample <- index[i, "sample"] 
      myLabel <- index[i, "label"] 

      #read tsv 
      d <- read.table(myPath, sep = "\t") 

      #result 
      cbind(mySample, myLable, d) 
      } 
     )) 
0

正如我一直在尋找與plyr包我找到了解決這個工作:

db <- ddply(index, .(Path), function(x){ 
    df <- read.delim (x$Path) 
    df$.id <- x$sample 
    df$label <- x$label 
    return(df) 
}) 
相關問題