Check list equality in R, all.equal doesn't return true -


i trying check whether rows in dataframe equal based on 4 elements of df. subset dataframe 2 rows , 4 elements want compare, , end 2 lists.

when use all.equal or identical on 2 lists, not return being equal. however, if cycle through each element in 2 lists , compare them using "==", each element comparison returns equal.

here code i'm using.

for (row in 1:nrow(df)) {     first <- df[row, c("elem1", "elem2", "elem3", "elem4")]     second <- df[row+1, c("elem1", "elem2", "elem3", "elem4")]     if (istrue(all.equal(first, second))) {       df[row, "diff_element"] <- 1     } } 

when print str(first) , str(second), they're identical. can't figure out why @ least all.equal doesn't return true.

here part of df:

   elem1 elem2 elem3  num1      num2    num3    num4 elem4 diff_element 1 103404   brj    cj 55.89  17.70005 107.017 77.0330   car            0 2 103404   brj    cj 55.89  17.70005 107.017 77.0330   car            0 3 355309   clk    jr 12.00 223.44000  23.000 20.2234 train            1 

here's when check structure (for first 2 rows, should equal):

> str(first) 'data.frame':   1 obs. of  4 variables:  $ elem1: int 103404  $ elem2: factor w/ 2 levels "brj","clk": 1  $ elem3: factor w/ 2 levels "cj","jr": 1  $ elem4: factor w/ 2 levels "car","train": 1 > str(second) 'data.frame':   1 obs. of  4 variables:  $ elem1: int 103404  $ elem2: factor w/ 2 levels "brj","clk": 1  $ elem3: factor w/ 2 levels "cj","jr": 1  $ elem4: factor w/ 2 levels "car","train": 1 


Comments