因此,如果我有两个列表,一个是不重复的“主列表”,另一个是可能重复的子集,我希望能够检查辅助子集列表中每个元素有多少个
所以,如果我有这些列表:
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()
一起思考
答案 0 :(得分:2)
您可以使用table
和match
-但首先要使向量成为因数,使不存在的电平包括在输出中:
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