因此,如果我有两个列表,一个是没有重复的“主列表”,另一个是可能重复的子集,我希望能够检查次要子集列表中每个元素的数量。
所以,如果我有这些列表:
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()
来思考它
您可以使用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
如果由于某种原因你想要一个整体解决方案。此方法保留列表中的原始数据类型。
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