如何测试给定向量是否具有一种类型和两种另外两种元素

时间:2017-03-16 23:31:43

标签: r vector

说我有大小为5的向量:

 b = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
       1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
       1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
       1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
 a = sample(b, 5, replace = FALSE)

当有13个不同的数字来构造向量时,我如何测试这样的向量是否具有一个数字的三个相同元素和另一个相同数字的两个元素。在这种情况下,十三个不同的数字是数字1-13。我知道r的几个函数,例如duplicated()或rle(),但我似乎无法想象如何在不使用极其复杂的if()语句的情况下测试这种情况。

到目前为止,我所做的是将矢量转换为每个数字的逻辑(0和1)矢量,并尝试对逻辑矢量求和,但是有十三个初始可能性,这将花费太长时间。

1 个答案:

答案 0 :(得分:1)

使用table函数获取唯一计数和unname以从表中获取值。然后测试你感兴趣的计数。

 a = c(3,3,3,4,4,13)
 counts = unname(table(a))
 3 %in% counts & 2 %in% counts