[R] extra arguments in do.call applied to a list of dataframes
Ista Zahn
istazahn at gmail.com
Sat Jan 17 18:25:31 CET 2015
I would just move the row.names to a column, and use Reduce instead of
do.call. Like this:
mylist <- lapply(mylist, function(x) data.frame(row = rownames(x), x))
Reduce(function(x, y){merge(x, y, by = "row", all=TRUE)}, mylist)
Best,
Ista
On Sat, Jan 17, 2015 at 11:37 AM, Remi Genevest <rgenevest at free.fr> wrote:
> Hello,
>
> I have a list of dataframes with different number of rows and I want to bind
> columns by rownames and put some NAs where rownames do not match.
>
> I was thinking about doing something like this :
>
> do.call(merge,c(mylist,by="row.names",all.x=TRUE))
>
> but I get the following error message :
>
> /Erreur dans fix.by(by.x, x) :
> 'by' doit spécifier lune ou plusieurs colonnes comme des entiers, des noms
> ou des valeurs logiques
> /
>
> Have you any ideas to fix it?
>
> Thing is that it works fine when I try with a list of 2 dataframes, but goes
> wrong with 3 and more dataframes. (see examples below)
>
> ## works well with 2 dataframes :
> mylist<-list()
> mylist[[1]]<-data.frame(y=seq(1,10))
> mylist[[2]]<-data.frame(y=seq(1,5))
> do.call(merge,c(mylist,by="row.names",all.x=TRUE))
>
> Row.names y.x y.y
> 1 1 1 1
> 2 10 10 NA
> 3 2 2 2
> 4 3 3 3
> 5 4 4 4
> 6 5 5 5
> 7 6 6 NA
> 8 7 7 NA
> 9 8 8 NA
> 10 9 9 NA
>
> ## fails with 3 df :
> mylist<-list()
> mylist[[1]]<-data.frame(y=seq(1,10))
> mylist[[2]]<-data.frame(y=seq(1,5))
> mylist[[3]]<-data.frame(y=seq(1,7))
> do.call(merge,c(mylist,by="row.names",all.x=TRUE))
>
> /Erreur dans fix.by(by.x, x) :
> 'by' doit spécifier lune ou plusieurs colonnes comme des entiers, des noms
> ou des valeurs logiques/
>
> Thanks for help !!
>
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/extra-arguments-in-do-call-applied-to-a-list-of-dataframes-tp4701915.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
More information about the R-help
mailing list