base::match() and base::%in% are not generics, so we can't just define Arrow methods for them. These functions expose the analogous functions in the Arrow C++ library.
match_arrow(x, table,...)is_in(x, table,...)
Arguments
x: Scalar, Array or ChunkedArray
table: Scalar, Array,ChunkedArray`, or R vector lookup table.
...: additional arguments, ignored
Returns
match_arrow() returns an int32-type Arrow object of the same length and type as x with the (0-based) indexes into table. is_in() returns a boolean-type Arrow object of the same length and type as x with values indicating per element of x it it is present in table.
Examples
# note that the returned value is 0-indexedcars_tbl <- arrow_table(name = rownames(mtcars), mtcars)match_arrow(Scalar$create("Mazda RX4 Wag"), cars_tbl$name)is_in(Array$create("Mazda RX4 Wag"), cars_tbl$name)# Although there are multiple matches, you are returned the index of the first# match, as with the base R equivalentmatch(4, mtcars$cyl)# 1-indexedmatch_arrow(Scalar$create(4), cars_tbl$cyl)# 0-indexed# If `x` contains multiple values, you are returned the indices of the first# match for each value.match(c(4,6,8), mtcars$cyl)match_arrow(Array$create(c(4,6,8)), cars_tbl$cyl)# Return type matches type of `x`is_in(c(4,6,8), mtcars$cyl)# returns vectoris_in(Scalar$create(4), mtcars$cyl)# returns Scalaris_in(Array$create(c(4,6,8)), cars_tbl$cyl)# returns Arrayis_in(ChunkedArray$create(c(4,6),8), cars_tbl$cyl)# returns ChunkedArray