R为什么“==”操作不会返回%in%in%

时间:2017-02-20 11:43:29

标签: r vector comparison

比较两个向量时我有些奇怪:

<p class="form-row form-row form-row form-row-first validate-required woocommerce-validated" id="billing_email_field">
<label for="billing_email" class="">Email <abbr class="required" title="required">*</abbr></label>
<input type="text" class="input-text " name="billing_email" id="billing_email" placeholder="Email" value="abc@gmail.com"></p>
<span class="message"></span>

返回:TRUE FALSE FALSE FALSE FALSE FALSE TRUE

最后是:

individuals=c("A","C","X","Z")
m=c("A", "B", "C", "D", "E", "F", "X", "Z")
individuals == m

返回:1 7 8

我缺少什么?

2 个答案:

答案 0 :(得分:4)

你得到的结果确实是正确的 R成对比较每个值:

individuals |   m   |  res
     A      |   A   |  T
     B      |   C   |  F
     C      |   X   |  F
     D      |   Z   |  F

然后回收m

individuals |   m   |  res
     E      |   A   |  F
     F      |   C   |  F
     X      |   X   |  T
     Z      |   Z   |  T

如果您想检查m中的individuals元素是否在%in%中使用m %in% individuals # TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE

using

答案 1 :(得分:2)

我们可以使用match

!is.na(match(m, individuals))
#[1]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE

意外结果的原因是==如何比较回收的元素,即“个人”中的值。被复制到“&m;”的长度。向量

rep(individuals, length.out = length(m))
#[1] "A" "C" "X" "Z" "A" "C" "X" "Z"

m==rep(individuals, length.out = length(m))
#[1]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE