如何比较 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,
如何比较vec1
和vec2
,发现元素4是他们共享的最后一个TRUE
?并假设向量并不总是相同的长度?
我希望这是有道理的。提前谢谢。
答案 0 :(得分:1)
您的示例中感兴趣的部分是which
和intersect
。以下是可重复的示例。
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)