[R] a question on list manipulation

Dennis Murphy djmuser at gmail.com
Fri Aug 5 21:23:18 CEST 2011


Hi:

Your clarification suggests Duncan was on the right track, so how about this:

x <- list(A=c("d", "e", "f"), B=c("d", "e"), C=c("d"))
x2 <- unique(unlist(x))
w <- lapply(x, function(u) names(x)[which(x2 %in% u)])
names(w) <- x2
w
$d
[1] "A" "B" "C"

$e
[1] "A" "B"

$f
[1] "A"

HTH,
Dennis

On Fri, Aug 5, 2011 at 10:04 AM, zhenjiang xu <zhenjiang.xu at gmail.com> wrote:
> Exactly! Sorry I get others misunderstood. The uppercase/lowercase is
> only a toy example (and a bad one; yours is better than mine). My
> question is a more general one: a list is basically a one-to-many
> matching, from the names of a list to the elements belonging to each
> name. I'd like to reverse the matching, from all the elements to the
> names of the list.
>
> On Fri, Aug 5, 2011 at 12:53 PM, Duncan Murdoch
> <murdoch.duncan at gmail.com> wrote:
>> On 05/08/2011 12:05 PM, zhenjiang xu wrote:
>>>
>>> Hi R users,
>>>
>>> I have a list:
>>> >  x
>>> $A
>>> [1] "a"  "b"  "c"
>>> $B
>>> [1] "b"  "c"
>>> $C
>>> [1] "c"
>>>
>>> I want to convert it to a lowercase-to-uppercase list like this:
>>> >  y
>>> $a
>>> [1] "A"
>>> $b
>>> [1] "A"  "B"
>>> $c
>>> [1] "A"  "B"  "C"
>>>
>>> In a word, I want to reverse the list names and the elements under
>>> each list name. Is there any quick way to do that? Thanks
>>
>> I interpreted this question differently from the others, and your example is
>> ambiguous as to which is the right interpretation.  I thought you wanted to
>> swap names and elements,  so
>>
>>> x <- list(A=c("d", "e", "f"), B=c("d", "e"), C=c("d"))
>>> x
>> $A
>> [1] "d" "e" "f"
>>
>> $B
>> [1] "d" "e"
>>
>> $C
>> [1] "d"
>>
>> would become
>>
>>> list(d=c("A", "B", "C"), e=c("A", "B"), f="A")
>> $d
>> [1] "A" "B" "C"
>>
>> $e
>> [1] "A" "B"
>>
>> $f
>> [1] "A"
>>
>> I don't know a slick way to do this; I'd just do it by brute force, looping
>> over the names of x.
>>
>> Duncan Murdoch
>>
>
>
>
> --
> Best,
> Zhenjiang
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list