簡體   English   中英

R將列表取消列出為整數

[英]R unlist a list to integers

[經過修改的版本]

我在R中有一個大的字符向量,大小為57241,其中包含基因符號,例如

基因<-c(“ AL627309.1”,“ SMIM1”,“ DFFB”)#假定大小為57241

我有另一張表,其中一列table $ genes在每一行中都有一些基因組合,例如

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。如何將其轉換為整數向量? 當我unlist()時,我莫名其妙地得到了一個長度約為500000的向量,而我應該得到與列表相同的長度。 我嘗試了許多功能和組合,但似乎無濟於事。 有任何想法嗎?

謝謝

我無法使用列表或數據框重現該行為:

> 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)以使問題可重現。 您還應該停止使用單詞“列表”來引用table $ gene項目中的項目。 它使認為您在談論R“列表”的R的普通用戶感到困惑。 您可以嘗試使用以下方法查看ind“列表”中哪個項目的長度向量大於1:

 which(sapply(ind, length) > 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM