【问题标题】:How to check if elements in one vector are equal to another vector in R?如何检查一个向量中的元素是否等于R中的另一个向量?
【发布时间】:2017-09-07 01:01:47
【问题描述】:

我有两个不相等的向量

x <- c(5,5,5,5,5,5)
y <- c(5,5)

我想检查 x 中的所有元素是否等于 y 中的所有元素。

我试过if(mean(x) - mean(y) == 0 &amp; sd(x) - sd(y) ==0){count=count+1} 但是,我意识到元素的某些独特组合可以具有相同的 x 和 y 均值和相同的标准偏差。关于如何实现这一目标的任何建议?

【问题讨论】:

  • 你只是想要identical(x, y) 还是all.equal(x, y) ?
  • length(setdiff(x, y)) == 0 怎么样?这适用于长度不相等和多个不同的元素?
  • 你能提供一个完整的例子吗?对于这个all(unique(x) %in% unique(y)) 似乎有效。
  • @RonakShah,该代码适用于本示例,但不适用于向量具有不同之处。为此,您需要进行逻辑测试。
  • identical(sort(unique(x)), sort(unique(y)))

标签: r vector equality


【解决方案1】:

对所有唯一值使用逻辑测试:

x <- c(5,5,5,5,5,5)
y <- c(5,5)
z <- c(3,5,5)

> ifelse(unique(x) == unique(y), TRUE, FALSE)
[1] TRUE

> ifelse(unique(x) == unique(z), TRUE, FALSE)
[1] FALSE  TRUE

如果只需要一个输出,请使用all(),如果所有值都为 TRUE,则返回 TRUE:

> all(ifelse(unique(x) == unique(y), TRUE, FALSE))
[1] TRUE

> all(ifelse(unique(x) == unique(z), TRUE, FALSE))
[1] FALSE

【讨论】:

  • 我正在尝试使用count = count +1,因此我尝试使用if(unique(x) == unique(y)){count=count+1},但另一个其他条件是我较大代码的一部分。但我一直遇到一个错误,上面写着the condition has length &gt; 1 and only the first element will be used
  • count 在 dplyr 包中?我不确定您要问什么,但对于您提出的问题,上述解决方案有效,@d.b. 的解决方案也是如此:identical(sort(unique(x)), sort(unique(y)))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 2014-02-05
  • 1970-01-01
  • 2017-04-07
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多