[R] merging dataframes in a list

Ed Siefker ebs15242 at gmail.com
Fri Jun 3 20:41:31 CEST 2016


I manually constructed the list of sample names and tried the
aggregate call I mentioned.
Merge works when called manually, but not when using aggregate.

> mylist <- list(data.frame(name="sample1", red=20), data.frame(name="sample1", green=15), data.frame(name="sample2", red=10), data.frame(na me="sample2", green=30))
>  names <- list("sample1", "sample1", "sample2", "sample2")
> merge(mylist[1], mylist[2])
     name red green
1 sample1  20    15
> merge(mylist[3], mylist[4])
     name red green
1 sample2  10    30
> aggregate(mylist, by=as.list(names), merge)
Error in as.data.frame(y) : argument "y" is missing, with no default

What's the right way to do this?

On Fri, Jun 3, 2016 at 1:20 PM, Ed Siefker <ebs15242 at gmail.com> wrote:
> I have a list of data as follows.
>
>> list(data.frame(name="sample1", red=20), data.frame(name="sample1", green=15), data.frame(name="sample2", red=10), data.frame(name="sample 2", green=30))
> [[1]]
>      name red
> 1 sample1  20
>
> [[2]]
>      name green
> 1 sample1    15
>
> [[3]]
>      name red
> 1 sample2  10
>
> [[4]]
>      name green
> 1 sample2    30
>
>
> I would like to massage this into a data frame like this:
>
>      name red green
> 1 sample1  20    15
> 2 sample2  10    30
>
>
> I'm imagining I can use aggregate(mylist, by=samplenames, merge)
> right?  But how do I get the list of samplenames?  How do I subset
> each dataframe inside the list?



More information about the R-help mailing list