Lastly, the libr package contains an enhanced equality operator. The objective of the
%eq% operator is to return a TRUE or FALSE value when any two objects are compared. This enhanced equality operator is useful for situations when you don’t want to check for NULL or NA values, or care about the data types of the objects you are comparing.
%eq% operator also compares data frames. The comparison will include all data values, but no attributes. This functionality is particularly useful when comparing tibbles, as tibbles often have many attributes assigned by
While it can be advantageous to have a comparison operator that does not give errors when encountering a NULL or NA value, note that this behavior can also mask problems with your code. Therefore, use the
%eq% operator with care.
Below is an example of several comparisons using the
%eq% infix operator:
library(libr) # Comparing of NULLs and NA NULL %eq% NULL # TRUE NULL %eq% NA # FALSE NA %eq% NA # TRUE 1 %eq% NULL # FALSE 1 %eq% NA # FALSE # Comparing of atomic values 1 %eq% 1 # TRUE "one" %eq% "one" # TRUE 1 %eq% "one" # FALSE 1 %eq% Sys.Date() # FALSE # Comparing of vectors v1 <- c("A", "B", "C") v2 <- c("A", "B", "C", "D") v1 %eq% v1 # TRUE v1 %eq% v2 # FALSE # Comparing of data frames mtcars %eq% mtcars # TRUE mtcars %eq% iris # FALSE iris %eq% iris[1:50,] # FALSE # Mixing it up mtcars %eq% NULL # FALSE v1 %eq% NA # FALSE 1 %eq% v1 # FALSE