Faz um loop sobre um quadro de dados comparando elementos dos primeiros e da segunda linha

1

Eu quero fazer um loop em um dataframe, quero comparar um dos elementos da linha real e da próxima linha.

por exemplo, eu tenho um quadro de dados que se parece com isso:

      V1       V2          V3            V4
 1   chr1      10         1000          2000 
 2   chr1      10         2000          3000
 3   chr1      10         4000          5000
 .
 .
 .

Eu gostaria de comparar o elemento da 1ª linha e da 4ª coluna com o elemento da 2ª linha e da terceira coluna, e se eles são os mesmos, faça alguma coisa, então o elemento da 2ª linha e 4ª coluna com o elemento da 3ª linha e 3ª coluna, faça algo e assim por diante.

Estou tentando algo assim:

for (i in 1:nrow(my_dataframe)){
 if (my_dataframe[i, 4] == my_dataframe[i+1 , 3]) {
 print("OK")
   }
 }

Isso me daria, por exemplo, 1 OK com meu quadro de dados de exemplo

No entanto, parece que R não gosta do i + 1, porque está me dando o próximo erro:

Error in if (tabla4subset[i, 4] > tabla4subset[i + 1, 3]) { : 
missing value where TRUE/FALSE needed

Alguém sabe como fazer isso?

    
por Eric González 19.06.2017 / 00:38

1 resposta

0

Eu acho que sei qual foi o problema.

i + 1 = nrow(my_dataframe) + 1 

Por exemplo, se o meu quadro de dados for de 10 linhas, estou tentando comparar, no final, a linha 10 com a linha 11 que não existe. Então a solução foi:

for (i in 1:(nrow(my_dataframe)-1)) {
if(my_dataframe[i, 4] == my_dataframe[i + 1, 3]) {
  print("OK")
 } 
}
    
por 19.06.2017 / 05:04

Tags