[R] Decomposing a List

Bert Gunter gunter.berton at gene.com
Thu Apr 25 16:53:50 CEST 2013


Well, what you really want to do is convert the list to a matrix, and
it can be done directly and considerably faster than with the
(implicit) looping of sapply:

f1 <- function(l)sapply(l,"[",1)
f2 <- function(l)matrix(unlist(l),nr=2)
l <- strsplit(paste(sample(LETTERS,1e6,rep=TRUE),sample(1:10,1e6,rep=TRUE),sep="+"),"+",fix=TRUE)

## Then you get these results:

> system.time(x1 <- f1(l))
   user  system elapsed
   1.92    0.01    1.95
> system.time(x2 <- f2(l))
   user  system elapsed
   0.06    0.02    0.08
> system.time(x2 <- f2(l)[1,])
   user  system elapsed
    0.1     0.0     0.1
> identical(x1,x2)
[1] TRUE


Cheers,
Bert






On Thu, Apr 25, 2013 at 3:32 AM, Ted Harding <Ted.Harding at wlandres.net> wrote:
> Thanks, Jorge, that seems to work beautifully!
> (Now to try to understand why ... but that's for later).
> Ted.
>
> On 25-Apr-2013 10:21:29 Jorge I Velez wrote:
>> Dear Dr. Harding,
>>
>> Try
>>
>> sapply(L, "[", 1)
>> sapply(L, "[", 2)
>>
>> HTH,
>> Jorge.-
>>
>>
>>
>> On Thu, Apr 25, 2013 at 8:16 PM, Ted Harding <Ted.Harding at wlandres.net>wrote:
>>
>>> Greetings!
>>> For some reason I am not managing to work out how to do this
>>> (in principle) simple task!
>>>
>>> As a result of applying strsplit() to a vector of character strings,
>>> I have a long list L (N elements), where each element is a vector
>>> of two character strings, like:
>>>
>>>   L[1] = c("A1","B1")
>>>   L[2] = c("A2","B2")
>>>   L[3] = c("A3","B3")
>>>   [etc.]
>>>
>>> >From L, I wish to obtain (as directly as possible, e.g. avoiding
>>> a loop) two vectors each of length N where one contains the strings
>>> that are first in the pair, and the other contains the strings
>>> which are second, i.e. from L (as above) I would want to extract:
>>>
>>>   V1 = c("A1","A2","A3",...)
>>>   V2 = c("B1","B2","B3",...)
>>>
>>> Suggestions?
>>>
>>> With thanks,
>>> Ted.
>>>
>>> -------------------------------------------------
>>> E-Mail: (Ted Harding) <Ted.Harding at wlandres.net>
>>> Date: 25-Apr-2013  Time: 11:16:46
>>> This message was sent by XFMail
>>>
>>> ______________________________________________
>>> 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.
>>>
>
> -------------------------------------------------
> E-Mail: (Ted Harding) <Ted.Harding at wlandres.net>
> Date: 25-Apr-2013  Time: 11:31:57
> This message was sent by XFMail
>
> ______________________________________________
> 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.



-- 

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm



More information about the R-help mailing list