在没有grep的情况下返回R中列表中出现的元素数

时间:2014-04-12 14:24:38

标签: r list grep

我需要在列表中搜索一组值(动态)而不使用grep

计算后,我得到一组存储在矢量中的值,例如:

vec<-c("146002","1976867")

list_a:

[[1]]
[1] "318484"  "146002"  "1453825" "1976867" "1591246"

[[2]]
[1] "1059410" "1370072" "787848"  "2075616" "456048"  "669019"  "2151636" "557068"  "32948"   "595490"  "1752826"

我需要回复vec中出现list_a元素的次数。

3 个答案:

答案 0 :(得分:2)

尝试table

vec <- c("146002", "1976867")

a_list <- list(c("318484", "146002", "1453825",  "1976867",  "1591246"),
               c("1059410", "1370072",  "787848", "2075616", "456048",
                 "669019", "2151636", "557068", "32948", "595490", "1752826"))

table(unlist(a_list))[vec]
# 146002 1976867 
#      1       1

答案 1 :(得分:1)

使用lapply拨打%in%似乎就是这样做的。

> lapply(seq(length(list_a)), function(i) sum(list_a[[i]] %in% vec))
## [[1]]
## [1] 2

## [[2]]
## [1] 0

答案 2 :(得分:0)

您可以尝试使用^$匹配整个字符串。

grep("^123$",c("123","1234","4123","123123","123"))