[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