[R] Decomposing a List

David Winsemius dwinsemius at comcast.net
Fri Apr 26 05:53:40 CEST 2013


On Apr 25, 2013, at 7:53 AM, Bert Gunter wrote:

> 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)

Consider this alternative:

L = list( c("A1","B1"), c("A2","B2"), c("A3","B3") )
simplify2array(L)
     [,1] [,2] [,3]
[1,] "A1" "A2" "A3"
[2,] "B1" "B2" "B3"

-- 
David.

> 

> ## 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
> 
> ______________________________________________
> 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.

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list