如何使用嵌套循环比较R中的两个数据帧

时间:2018-07-02 17:22:50

标签: r loops for-loop nested

for(i in as.vector(as.matrix(TargetLength))) {
  for(j in as.vector(as.matrix(AlignmentBlockLength))) {
    if(c(i) == c(j)) {
      print("alignment")
    }
  }
}

如何在R中实现此嵌套的for循环?还是有另一种方法可以在不使用嵌套循环的情况下将第一个数据帧中的每个值与第二个数据帧中的每个值进行比较?

1 个答案:

答案 0 :(得分:0)

您可以创建一个将第一个数据框中的值与第二个数据框中的值进行比较的函数。但是,有一种更简单的方法,我为您提供两种解决方案。

### Solution 1
compare <- function(df1,df2){
  n = nrow(df1); p = ncol(df1)
  result = matrix(NA,nrow = n, ncol = p)
  for(j in seq_len(p)){
    for(i in seq_len(n)){
      result[i,j] <- df1[i,j] == df2[i,j]
    }
  }
  print(result)
}


A = data.frame(matrix(c(1,2,3,4,5,6),2,3,T))
B =  data.frame(10+matrix(c(1,2,3,4,5,6),2,3,T))

compare(A,A)
compare(A,B)

### Solution 2
A == B
#as.vector(A == B)
        X1    X2    X3
[1,] FALSE FALSE FALSE
[2,] FALSE FALSE FALSE