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?

1
  • I’m voting to close this question because it should have been asked on StackOverflow.
    – AdminBee
    May 25 at 6:42

1 Answer 1

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")
 } 
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.