Source code for rpy2.rlike.functional

import itertools


[docs]def tapply(seq, tag, fun): """ Apply the function `fun` to the items in `seq`, grouped by the tags defined in `tag`. :param seq: sequence :param tag: any sequence of tags :param fun: function :rtype: list """ if len(seq) != len(tag): raise ValueError("seq and tag should have the same length.") tag_grp = {} for i, t in enumerate(tag): try: tag_grp[t].append(i) except LookupError as le: tag_grp[t] = [i, ] res = [(tag, fun([seq[i] for i in ti])) for tag, ti in tag_grp.items()] return res
def listify(fun): """ Decorator to make a function apply to each item in a sequence, and return a list. """ def f(seq): res = [fun(x) for x in seq] return res return f def iterify(fun): """ Decorator to make a function apply to each item in a sequence, and return an iterator. """ def f(seq): for x in seq: yield fun(x) return f