fastmatch - Fast match() function replacement
RForge.net

fastmatch

About fastmatch
GIT access
Download/Files
News
Check results
Package R docs

News/Changelog

 NEWS for fastmatch
--------------------

1.1-6
    o   use C99 version of flexible arrays to avoid
        false-positives in strict array sanitizers.

    o   PROTECT fix when falling back to R's match
        and coercion happened before.

    o   bugfix: fast.hash returned the result instead of
        the table argument. (#9)


1.1-5   2024-02-14
    o   bug fix: -0 in table= would never be matched,
        because it was (correctly) hashed as 0, but final
        comparison was 0 to -0 in the table. (#12)


1.1-4   2023-06-13
    o   use eval(match(...)) instead of match5 for safety


1.1-3   2021-07-23
    o   don't call XLENGTH() on NULL objects

    o   if compiled with -DCHECKHASH fastmatch will re-compute
        the hash table every time and compare it to the existing
        table to verify its consistency. This can be used to
        detect incorrect use of fastmatch, i.e., cases where
        the object is modified and the hash table is not removed.


1.1-2   2021-07-22
    o   minor change for compatibility with R-devel


1.1-1   2019-04-16
    o   fix protection bug in case when fmatch() falls back to
        R's match() because of unsupported types (thanks to
        Tomáš Kalibera)


1.1-0   2017-01-28
    o   add fmatch.hash() which will create a hash table that can
        be used later with fmatch(). This can be used in cases where
        attaching the hash to the table implicitly is not reliable.

    o   added ctapply() - a fast version of tapply()

    o   added coalesce() - fast way of grouping unique values into
        contiguous groups (in linear time).

    o   added  - a fast version of 

    o   fastmatch now supports long vectors. Note that the hash
        function is the same as in R and thus it uses at most 32-bits,
        hence long vectors can be used, but they must have less than
        2^32 (~4e9) unique values.

    o   bugfix: matching reals against a table that contains NA or NaNs
        would not match the position of those but return NA instead.

    o   bugfix: fix crash when a newly unserialized hash table is
        used (since the table hash is not stored during serialization).


1.0-4   2012-01-12
    o   some R functions (such as subset assignment like x[1] <- 2)
        can create a new object (with possibly modified content) and
        copy all attributes including the hash cache. If the original
        object was used as a table in fmatch(), the hash cache will be
        copied into the modified object and thus its cache will be
        possibly out of sync with the object. fmatch() will now
        identify such cases and discard the hash to prevent errorneous
        results.

1.0-3   2011-12-21
    o   match() coerces POSIXlt objects into characters, but so far 
        fmatch() performed the match on the actual objects.
        Now fmatch() coerces POSIXlt object into characters just like
        match(), but note that you will lose the ability to perform
        fast lookups if the table is a POSIXlt object -- please use
        POSIXct objects (much more efficient) or use as.character() on
        the POSIXlt object to create a table that you want to re-use.

1.0-2   2011-09-14
    o   bugfix: nomatch was ignored in the fastmatch implementation
        (thanks to Enrico Schumann for reporting)

1.0-1   2010-12-23
    o   minor cleanups

1.0-0   2010-12-23
    o   initial release