[英]Subsetting a list in R
我正在使用看起來像這樣的列表p:
p
$AAANWWTGC_UNKNOWN
[1] "4208" "481" "6095" "10370" "351"
$AAAYRNCTG_UNKNOWN
[1] "4052" "9842" "23047" "55800" "1942"
$MYOD_01
[1] "23630" "84668" "3151" "26523" "667"
$E47_01
[1] "90523" "84668" "26523" "154807" "1942"
我想過濾p以獲得另一個列表,例如q,僅保留列表p中包含給定向量中至少一個字符的元素,例如:
v<-c("4052","1942")
因此,此特定示例中的新列表q應該如下所示:
q
$AAAYRNCTG_UNKNOWN
[1] "4052" "9842" "23047" "55800" "1942"
$E47_01
[1] "90523" "84668" "26523" "154807" "1942"
非常感謝!
我們可以從base R
使用Filter
Filter(function(x) any(v %in% x), p)
#$AAAYRNCTG_UNKNOWN
#[1] "4052" "9842" "23047" "55800" "1942"
#$E47_01
#[1] "90523" "84668" "26523" "154807" "1942"
您可以嘗試使用purrr
包含的tidyverse
的keep
函數對比賽進行計數。 然后子集列表中大於0
的列表。
library(tidyverse)
list(c( "4208" , "481" ,"6095" ,"10370" ,"351" ),
c( "4052" , "9842", "23047", "55800" , "1942"),
c("23630", "84668" , "3151" ,"26523", "667"),
c("90523" , "84668" , "26523" , "154807" ,"1942" )) %>%
keep(function(x) sum(x %in% v) > 0)
[[1]]
[1] "4052" "9842" "23047" "55800" "1942"
[[2]]
[1] "90523" "84668" "26523" "154807" "1942"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.