r - 如何测试给定向量是否具有一种类型的三个元素和另一种类型的两个元素

标签 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的几个函数,例如duplicate()或rle(),但我似乎无法想到如何在不使用极其复杂的if()语句的情况下测试这种情况。

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

最佳答案

使用表函数获取唯一计数并使用 unname 从表中获取值。然后测试您感兴趣的计数。

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

关于r - 如何测试给定向量是否具有一种类型的三个元素和另一种类型的两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42846650/

相关文章:

r - 让 match.call() 与 *apply 和 plyr 一起工作? (重新 : Referencing a dataframe recursively)

r - 在计算逐步多项式回归之前如何消除p值> 0.7的变量?

r - 如何在 Shiny 的应用程序中对桑基图中的源和/或目标节点进行排序?

c++ - 为什么这个程序崩溃了

vector - 从 Mat OpenCV 获取非零索引

java - OpenCV + Android + 车牌识别

r - 根据多个数据子集条件的行值创建新列

r - 如何加速 data.table 中的字符串拆分操作

c++ - 是否有可能获得指向 std::vector<unsigned int> 数据的原始指针?

c++ - 返回 vector 最高值的前 5 个索引的函数