比较2个未知长度的矢量来找到一个共同的值? - R.

时间:2014-02-02 13:43:31

标签: r statistics

如何比较 R 中的两个向量,并找到元素中最后一个常见的“TRUE”值?

这有点难以解释,所以这是一个例子:

  Element:  [1]   [2]   [3]   [4]   [5]    [6]    [7]    [8]  [9]   [10]
  vec1 <- TRUE, TRUE, TRUE, TRUE, TRUE,  TRUE,  TRUE, FALSE,  NA, FALSE,
  vec2 <- TRUE, TRUE, TRUE, TRUE,   NA, FALSE, FALSE,    NA,  NA,    NA,

如何比较vec1vec2,发现元素4是他们共享的最后一个TRUE?并假设向量并不总是相同的长度?

我希望这是有道理的。提前谢谢。

3 个答案:

答案 0 :(得分:1)

您的示例中感兴趣的部分是whichintersect。以下是可重复的示例。

vec1 = sample(c(TRUE,FALSE),10, replace=TRUE)
vec2 = sample(c(TRUE,FALSE),10, replace=TRUE)
max(intersect(which(vec1), which(vec2)))

答案 1 :(得分:1)

l <- min(length(vec1), length(vec2))
tail(which((vec1[1:l] == vec2[1:l])), 1)

答案 2 :(得分:0)

这是一种方法,因为当加总为2时,逻辑值(F = 0和T = 1)意味着您有2 TRUE。我们只需添加两个向量,使用which查找==到2的索引,然后使用tail取最后一个:

tail(which(vec1 + vec2 == 2), 1)