In python, one can do this mydict = dict([(keyfun(x), valfun(x)) for x in mylist]) to create a dictionary with whatever keys and values we want from an input list of arbitrary size. In R, I want to similarly create a list with names/values that are generated by some keyfun and valfun (assuming that keyfun is guaranteed to return something suitable as a name). How can I do this?
list comprehension to create an arbitrary-sized list with arbitrary names/values
3 messages · Steve Kim, Olaf Mersmann, Erik Iverson
Hi,
On 13.10.2010, at 21:26, Steve Kim wrote:
mydict = dict([(keyfun(x), valfun(x)) for x in mylist]) to create a dictionary with whatever keys and values we want from an input list of arbitrary size. In R, I want to similarly create a list with names/values that are generated by some keyfun and valfun (assuming that keyfun is guaranteed to return something suitable as a name). How can I do this?
Try something like this: mydict <- lapply(mylist, valfun) names(mydict) <- sapply(mylist, keyfun) or mydict <- structure(lapply(mylist, valfun), names=sapply(mylist, keyfun)) Cheers Olaf
This question probably belongs on R-help instead of R-devel. What works best for you will depend on how big 'mylist' is. An article discussing some possibilities can be found at: http://opendatagroup.com/2009/07/26/hash-package-for-r/ Hope this helps, --Erik
Steve Kim wrote:
In python, one can do this mydict = dict([(keyfun(x), valfun(x)) for x in mylist]) to create a dictionary with whatever keys and values we want from an input list of arbitrary size. In R, I want to similarly create a list with names/values that are generated by some keyfun and valfun (assuming that keyfun is guaranteed to return something suitable as a name). How can I do this?
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel