假设我有大小为 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/