[修订版]
我在R大小为57241的大字符向量中包含基因符号,例如
基因< - c(“AL627309.1”,“SMIM1”,“DFFB”)#假设这个大小为57241
我有另一张表,其中一列表$基因在每一行中都有一些基因组合,例如
head(table$genes)
[1] ,OR4F5,AL627309.1,OR4F29,OR4F16,AL669831.1,
[2] ,TP73,CCDC27,SMIM1,LRRC47,CEP104,DFFB
..
这个表有大约1400行。对于每个基因,我想找到它所在的表中的行索引。
为此,我使用了
ind <- sapply(gene, grep, table$genes, fixed=TRUE,USE.NAMES=FALSE))
返回的变量“ind”是一个大小为57241的大型列表,看起来像这样
head(ind)
[[1]]
[1] 1
[[2]]
[1] 1
[[3]]
[1] 1
[[4]]
[1] 1
[[5]]
[1] 1
[[6]]
[1] 1
我知道每个基因在该表中只存在一次。所以我感兴趣的数字是上面每行中的列表,即1.如何将其转换为整数向量?当我以某种方式取消列表()时,我得到一个长度为~500000的向量,而我应该得到与列表相同的长度。我尝试过很多功能和组合但似乎没什么用。有什么想法吗?
由于
答案 0 :(得分:2)
我无法使用列表或数据框重现该行为:
> gene <- c("AL627309.1","SMIM1","DFFB")
>
> table <- list(genes =c(",OR4F5,AL627309.1,OR4F29,OR4F16,AL669831.1,",
",TP73,CCDC27,SMIM1,LRRC47,CEP104,DFFB"))
> (ind <- sapply(gene, grep, table$genes, fixed=TRUE,USE.NAMES=FALSE))
[1] 1 2 2
我想过你应该使用match
,但经过进一步的考虑后,似乎你的数据结构肯定会有所不同。尝试发布dput(head (table$gene))
和dput(gene)
以使您的问题可以重现。你也应该停止使用&#34; list&#34;引用该表中$项目的项目。它使R的常规用户感到困惑,他们认为你在谈论R&#34;列表&#34;。您可以尝试查看ind&#34; list&#34;中的哪些项目。有一个长度大于1的向量:
which(sapply(ind, length) > 1)