0

I want to loop over a dataframe, I want to compare one of the elements of the actual row and the next row.

for example, I have a data frame that looks like this:

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

I would like to compare the element of the 1st row and 4th column with the element of the 2nd row and third column, and if they are the same do something, then the element of the 2nd row and 4th column with the element of the 3th row and 3th column, do something and so on.

So I am trying something like this:

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

So this would give me for example 1 OK with my example data frame

However it looks that R doesn't like the i + 1, because is giving me the next error:

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

Some one know how to do this?

thanasisp
  • 8,122

1 Answers1

0

I think that I know which was the problem.

i + 1 = nrow(my_dataframe) + 1 

So for example, if my data frame is of 10 rows, I am trying to compare at the end the row 10 with the row 11 that doesn't exist. So the solution was:

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