2014-04-10 57 views
1

我覺得這一定比我做得更簡單,但由於某種原因,我甚至在想辦法解答這個問題時遇到了一些困難 - 請隨時在這裏提出一些更好的術語,因爲我認爲我甚至會迷惑自己。我對R非常陌生,我認爲我感到困惑,因爲我一直在努力完成這個任務,我將如何使用Python。在R中,如何限制基於另一個列表的列表列表?

這是我想解決的問題:我有一個向量列表(GO_list)和另一個向量(目標)。我只是想創建一個新的載體列表(NewList),它只包含來自GO_list的列表,如果它們與我的其他列表(目標)中的術語相匹配。

例如:

>GO_list[1:5] 

$ENSCPOP00000019422 
[1] "GO:0006821" "GO:0055085" "GO:0006897" 
$ENSRNOP00000017654 
[1] "GO:0000165" "GO:0007169" "GO:0007399" 
$ENSMUSP00000000365 
[1] "GO:0006351" "GO:0006355" "GO:0006974" "GO:0007049" "GO:0008150" "GO:0040008" 
$ENSCPOP00000019426 
[1] "GO:0006470" "GO:0016311" 
$ENSCPOP00000019424 
[1] "GO:0006886" 

>Targets[1:5] 
[1] "ENSMUSP00000104347" "ENSMUSP00000081003" "ENSMUSP00000134911" 
[3] "ENSMUSP00000081001" "ENSMUSP00000081002" 

所以我只想包括GO_list [1]在NewList如果ENSCPOP00000019422是在目標。

這個問題有意義嗎?

謝謝你的時間!

回答

0

像這樣?

> x <- list(A=1, B=2, C=3, D=4, E=5) 
> target<-list("C","D") 
> x[names(x)%in%target] 
$C 
[1] 3 

$D 
[1] 4 
+0

嘿,謝謝!這非常有幫助。我用這裏寫的來寫這個,我想這就是我特別想要的: NewList < - GO_list [%(目標)中的名稱(GO_list)%] 現在的問題是我意識到NewList中的元素少於在目標,技術上應該是不可能的..我想知道是否有可能找出哪些事情失蹤。那麼,是否有一個%notin%函數與%函數中的%類似?再次感謝! – Jay

+0

您可以使用'setdiff(names(list1),names(list2))'查找'list1'中的元素名稱,但不能找到'list2'中的元素名稱。如果已解決您的問題,請考慮通過點擊檢查圖標接受答案。 –

相關問題