我有两个二进制向量,我试图找到最有效的方法来比较它们,而不仅仅是标准“它们是否相等?”。
我的功能是,如果我有向量x和向量y我想知道向量x中有多少次我在相同的索引处有一个1,向量y有一个0.我还需要当向量y有a 1 +有一个0,其中向量x也有0.(注意:如果我找到其中任何一个,我可以找到反向得到另一个,我只是不确定哪个更容易/更有效,即。VectorY得分=长度(VectorX) - VectorX得分)
例如:
向量x:1 1 1 0 0 1 - 得分:2
矢量y:0 1 0 1 0 1 - 得分:4
我知道我可以使用for循环遍历每个索引,但是如果可能的话我想要更高效的东西。我的矢量长度为100,我需要做很多这些比较,所以速度很重要。
我尝试使用sum命令,但我无法弄清楚如何向它添加复杂的条件。我可以找到匹配的每个地点,但这还不足以解决这个问题。
例如:
sum(vectorX == vectorY)
答案 0 :(得分:2)
样品:
> vx
[1] 1 1 1 0 0 1
> vy
[1] 0 1 0 1 0 1
你说:“在向量x中我有多少次在同一个索引处有一个1,向量y有一个0”
> vx==1 & vy==0 # constructs this vector:
[1] TRUE FALSE TRUE FALSE FALSE FALSE
> sum(vx==1 & vy==0) # its sum is the answer (TRUE=1, FALSE=0)
[1] 2
你还说:“当矢量y有1 +有一个0,其中矢量x也有一个0”,我不明白,但你可以澄清一下,并且可能自己解决这个问题我给出的答案我只是给你。