我已经制作了以下数据框(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]
}
答案 0 :(得分:0)
要将列表中的所有内容转换为字符,您只需运行一些应用函数即可。如果您保存该列表,那么当您在该列表上运行ReadElementContentAsString()
时,该检查应该可以正常工作。
如果它是真的,我不太确定你想做什么。?
这假设空白单元格中包含NA。
lapply