我可以轻松地比较R中的2个向量,看看有多少个元素相同。

  a<- c(1,2,3,4)
  b<- c(1,2,3,5)
  sum(a==b) would give me what I want

但是如何比较3个向量呢?或同时超过3个向量?
  a<- c(1,2,3,4)
  b<- c(1,2,3,5)
  c<- c(2,3,4,5)
  sum(a==b & b==c) # does not seem to be correct

我正在寻找元素在相同位置是否相同。在相同的情况下,由于a,b,c在相同位置上都不相同,所以它会给我零。
count = 0
for(i in 1:length(a)){
  if((a[i]==b[i]) & (a[i]==c[i]))
  count=count+1
} # this will give me that I want, but the efficiency seems very low

最佳答案

is.equal <- function(mylist) {

    check.eq <- sapply(mylist[-1], function(x) {x == mylist[[1]]})

    as.logical(apply(check.eq, 1, prod))

}

is.equal(list(c(1,2,3,4), c(1,2,5,4), c(1,1,3,4)))

[1]  TRUE FALSE FALSE  TRUE

关于r - 在R?中同时比较多个向量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27470481/

10-12 14:59