我在将数据帧转换为列表时遇到了麻烦

时间:2015-05-17 23:02:37

标签: r

我已经制作了以下数据框(ampGenesTable)的扩增基因:

Gene   Description           Chr   Start       End
LYZ    lysozyme precursor    12    68028400    68034280
RB1    retinoblastoma 1      13    47775883    47954027
...    ... 

我想添加一个名为" Cytoband"的第六列。为此,我有另一个数据帧(放大),我想转换成一个列表(每个cytoband可以有几个基因):

Gene1     Gene2    Gene3   Gene4    Cytoband 
ERLIN2                              8p12
ERBB2                               17q12
APOD      MUC20                     3q29
...

我创建了一个列表:

geneList <- split(amplification[,1:4], amplification$Cytoband)

问题在于我无法搜索geneList。例如,如果我输入:

"ERLIN2" %in% geneList

我搞错了。经过仔细研究,我意识到每个元素都是一个列表:

...

$`9p23`
        X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16
9p23 PTPRD                                           

$`9q34.3`
             X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16
9q34.3 FLJ20433 

我如何转换列表,以便每个元素都是一个简单的字符向量并使搜索工作?如果是,我可以将Cytoband列添加到ampGenesTable:

ampGenesTable$Cytoband <- sapply(geneList, function(x){
       if (ampGenesTable$Gene %in% geneList[[x]]
       return x
   }

任何提示都将不胜感激。谢谢!

编辑:

for (i in 1:nrow(ampGenesTable)){
  gene <- as.character(ampGenesTable[i,1])
  position <- grep(gene,geneList1)
  ampGenesTable[i,7] <- names(geneList1)[position]
}

1 个答案:

答案 0 :(得分:0)

要将列表中的所有内容转换为字符,您只需运行一些应用函数即可。如果您保存该列表,那么当您在该列表上运行ReadElementContentAsString()时,该检查应该可以正常工作。

如果它是真的,我不太确定你想做什么。?

这假设空白单元格中包含NA。

lapply