从另一个列表中的一个列表中查找元素数

时间:2019-03-06 22:52:07

标签: r

因此,如果我有两个列表,一个是不重复的“主列表”,另一个是可能重复的子集,我希望能够检查辅助子集列表中每个元素有多少个

所以,如果我有这些列表:

a <- (a, b, c, d, e, f, g)
b <- (a, d, c, d, a, f, f, g, c, c)

我想确定列表a中的每个元素出现在列表b中的次数以及每个元素的出现频率。我理想的输出将是一个如下所示的r表:

c <- a b c d e f g 
     2 0 3 1 0 2 1

我一直在尝试与%in%table()一起思考

2 个答案:

答案 0 :(得分:2)

您可以使用tablematch-但首先要使向量成为因数,使不存在的电平包括在输出中:

a <- factor(c("a", "b", "c", "d", "e", "f", "g"))
b <- factor(c("a", "d", "c", "d", "a", "f", "f", "g", "c", "c"))

table(a[match(b, a)])

a b c d e f g 
2 0 3 2 0 2 1 

答案 1 :(得分:1)

如果出于某种原因需要整排解决方案。此方法将原始数据类型保留在列表中。

library(tidyverse)

a <- c("a", "b", "c", "d", "e", "f", "g")
b <- c("a", "d", "c", "d", "a", "f", "f", "g", "c", "c")

tibble(letters = a, count = unlist(map(a, function(x) sum(b %in% x))))

# A tibble: 7 x 2
 letters count
<chr>   <int>
1 a           2
2 b           0
3 c           3
4 d           2
5 e           0
6 f           2
7 g           1