【发布时间】:2018-03-10 16:50:37
【问题描述】:
我正在寻找一种有效的方法来在两个向量中找到具有相同索引的相同元素并计算它们。 假设我有两个向量,我想知道我实现了多少次 [1,1] 因此,如果我有两个向量(实际上它们会非常大),例如
x=c(2,1,8,1,4)
y=c(9,1,8,0,4)
我想计算 1 在 x 和 y 的相同位置只出现一次。 非常感谢您的帮助!
【问题讨论】:
-
感觉好像错过了什么,但这不就是
sum(x == y & x == 1)吗? -
我已经检查过了,它没有计算在比较向量时给出 (1,1) 的所有相同条目。 akrun 的 reduce 方法非常有效
-
@Arbiturka 这很有趣......它们在逻辑上似乎是等价的,但浮点数学可能会产生干扰。能举个例子吗?
-
当然,我举了一个简单的例子来测试它是否有效:x=c(1,4,1,1,7,1) y=c(1,5,1,6,7, 1) sum(x=y & x==0) [1] 0 所以,我得到了 0,而它应该是 3
-
@Arbiturka 我认为您复制了错误的代码。应该是
x==y,而不是x=y?另外,应该测试x==1,但你写了x==0。sum(x==y & x == 1)给我 3。顺便说一句,对于 cmets 中的代码,您可以使用反引号,对于多行代码,请使用;中断,以便可以复制粘贴。