[R] alternative to matching/merge?
Lana Schaffer
schaffer at scripps.edu
Tue Jun 17 18:47:48 CEST 2008
Jim,
I understand that that do.call will combine all
the lists into a matrix. But I have a list,x, which
is a list of a list as in x[[1]] and x[[2]] which
are themselves lists. Then using
do.call(rbind, x)
would combine both x[[1]] and x[[2]] into a matrix.
I want to keep x[[1]] and x[[2]] separately into
their own matrix, and so I am putting do.call
into a loop ie. do.call(rbind,x[[i]]) to keep
them separate.
More elegantly I would want to put do.call into
lapply but have not been successful to do this.
Lana
-----Original Message-----
From: jim holtman [mailto:jholtman at gmail.com]
Sent: Monday, June 16, 2008 5:24 PM
To: Lana Schaffer
Cc: hadley wickham; r-help at r-project.org
Subject: Re: [R] alternative to matching/merge?
Is this what you tried:
> x <- data.frame(a=1:10, b=1:10)
> x <- data.frame(a=1:3, b=1:3)
> do.call(rbind, list(x,x,x,x,x))
a b
1 1 1
2 2 2
3 3 3
4 1 1
5 2 2
6 3 3
7 1 1
8 2 2
9 3 3
10 1 1
11 2 2
12 3 3
13 1 1
14 2 2
15 3 3
>
On Mon, Jun 16, 2008 at 7:36 PM, Lana Schaffer <schaffer at scripps.edu>
wrote:
> Jim,
> Is it possible to do a do.call(rbind,d.frame) with a list like using
> lapply(data,func,args)?
> I have not successfully executed this.
> Lana
>
> -----Original Message-----
> From: hadley wickham [mailto:h.wickham at gmail.com]
> Sent: Friday, June 13, 2008 2:54 PM
> To: jim holtman
> Cc: Lana Schaffer; r-help at r-project.org
> Subject: Re: [R] alternative to matching/merge?
>
> On Fri, Jun 13, 2008 at 11:45 AM, jim holtman <jholtman at gmail.com>
> wrote:
>> What is the structure of 'd.frame' and 'segFile'? Run Rprof so that
>> we can see which of the functions it is spending its time in. What
>> happens if x$index is not in seqFile$index? Are the values in the
>> 'index' unique in both structures? Subsetting a data frame can be
>> expensive when compared to using a matrix. Could you use a matrix
>> instead of a data frame; are all the columns the same mode? Again
>> either a subset of data would be helpful or an 'str' on the data
>> objects being used so that we can understand what they are.
>
> A few other ideas to try:
>
> * try merging do.call("rbind", d.frame) and seqFile, and then
> spliting the results back up
>
> * try turning giving seqFile rownames (rownames(seqFile) <-
> seqFile$index) and then use character matching: cbind(x, seqFile[
> as.character(x$index)]
>
> * if there is a one to one corresponding between index in seqFile and
> all data.frames in d.frame, merge all of the d.frames together, order
> both by index then just cbind
>
> Hadley
>
>
> --
> http://had.co.nz/
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
More information about the R-help
mailing list