[R] Idiomatic looping over list name, value pairs in R

Luis N globophobe at gmail.com
Tue May 4 16:58:44 CEST 2010


Thank you. Your response was enlightening.

On Tue, May 4, 2010 at 11:38 PM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
> On 04/05/2010 10:24 AM, Luis N wrote:
>>
>> Considering the python code:
>>
>> for k, v in d.items(): do_something(k); do_something_else(v)
>>
>> I have the following for R:
>>
>> for (i in c(1:length(d))) { do_something(names(d[i]));
>> do_something_else(d[[i]]) }
>>
>> This does not seem seems idiomatic. What is the best way of doing the
>> same with R?
>>
>
> You could do it as
>
> for (name in names(d)) {
>  do_something(name)
>  do_something(d[[name]])
> }
>
> or
>
> sapply(names(d), function(name) {
>  do_something(name)
>  do_something_else(d[[name]])
> })
>
> or
>
> do_both <- function(name) {
>  do_something(name)
>  do_something_else(d[[name]])
> }
> sapply(names(d), do_both)
>
> My choice would be the first version, but yours might differ.
>
> Duncan Murdoch



More information about the R-help mailing list