Как сравнить два кадра данных в R с вложенными циклами - PullRequest
0 голосов
/ 02 июля 2018
for(i in as.vector(as.matrix(TargetLength))) {
  for(j in as.vector(as.matrix(AlignmentBlockLength))) {
    if(c(i) == c(j)) {
      print("alignment")
    }
  }
}

Как мне реализовать этот вложенный цикл for в R? Или есть другой способ сравнить каждое значение в первом фрейме данных с каждым значением во втором фрейме данных без использования вложенного цикла?

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете создать функцию, которая сравнивает значение в первом кадре данных со вторым кадром данных. Но есть более простой способ, однако, я даю вам оба решения.

### 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
...