首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个未知长度的向量,找出一个公共值?-R

问比较两个未知长度的向量,找出一个公共值?-R
EN

Stack Overflow用户
提问于 2014-02-02 13:43:31
回答 3查看 248关注 0票数 0

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

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

代码语言:javascript
复制
  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?假设向量的长度不一定相同?

我希望这是合理的。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-02 13:52:49

您的示例中感兴趣的部分是which和intersect。下面是一个可重复的例子。

代码语言:javascript
复制
vec1 = sample(c(TRUE,FALSE),10, replace=TRUE)
vec2 = sample(c(TRUE,FALSE),10, replace=TRUE)
max(intersect(which(vec1), which(vec2)))
票数 1
EN

Stack Overflow用户

发布于 2014-02-02 13:54:05

代码语言:javascript
复制
l <- min(length(vec1), length(vec2))
tail(which((vec1[1:l] == vec2[1:l])), 1)
票数 1
EN

Stack Overflow用户

发布于 2014-02-02 13:51:54

这里有一种方法,因为一个逻辑值(F=0和T=1)加到2中,意味着您有2个TRUE。因此,我们简单地将两个向量相加,使用which将这些==的索引设为2,然后用tail取最后一个向量。

代码语言:javascript
复制
tail(which(vec1 + vec2 == 2), 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21511271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档