如何比较R中的两个向量,并沿着元素找到最后一个常见的“真”值?
这有点难以解释,下面是一个例子:
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?假设向量的长度不一定相同?
我希望这是合理的。提前谢谢。
发布于 2014-02-02 13:52:49
您的示例中感兴趣的部分是which和intersect。下面是一个可重复的例子。
vec1 = sample(c(TRUE,FALSE),10, replace=TRUE)
vec2 = sample(c(TRUE,FALSE),10, replace=TRUE)
max(intersect(which(vec1), which(vec2)))发布于 2014-02-02 13:54:05
l <- min(length(vec1), length(vec2))
tail(which((vec1[1:l] == vec2[1:l])), 1)发布于 2014-02-02 13:51:54
这里有一种方法,因为一个逻辑值(F=0和T=1)加到2中,意味着您有2个TRUE。因此,我们简单地将两个向量相加,使用which将这些==的索引设为2,然后用tail取最后一个向量。
tail(which(vec1 + vec2 == 2), 1)https://stackoverflow.com/questions/21511271
复制相似问题