From noreply at r-forge.r-project.org Sat Aug 8 03:44:09 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sat, 8 Aug 2015 03:44:09 +0200 (CEST) Subject: [R-gregmisc-commits] r2064 - in pkg/gtools: R man Message-ID: <20150808014409.C44B3185852@r-forge.r-project.org> Author: warnes Date: 2015-08-08 03:44:08 +0200 (Sat, 08 Aug 2015) New Revision: 2064 Modified: pkg/gtools/R/smartbind.R pkg/gtools/man/smartbind.Rd Log: - smartbind() gets a new argument 'list' to pass a list of data frames, instead of/in addition to data frames as arguments. - Fix bug in smartbind's handling of factor levels. Modified: pkg/gtools/R/smartbind.R =================================================================== --- pkg/gtools/R/smartbind.R 2015-07-22 00:53:30 UTC (rev 2063) +++ pkg/gtools/R/smartbind.R 2015-08-08 01:44:08 UTC (rev 2064) @@ -2,9 +2,11 @@ ## Function to do rbind of data frames quickly, even if the columns don't match ## -smartbind <- function(..., fill=NA, sep=':', verbose=FALSE) +smartbind <- function(..., list, fill=NA, sep=':', verbose=FALSE) { - data <- list(...) + data <-list(...) + if(!missing(list)) + data <- modifyList(list, data) if(is.null(names(data))) names(data) <- as.character(1:length(data)) data <- lapply(data, @@ -95,12 +97,12 @@ blockIndex <- blockIndex+1 } - all.equal.or.null <- function(x,y,...) + all.equal.or.null <- function(x,y) { if(is.null(x) || is.null(y) ) return(TRUE) else - return(all.equal(x,y,...)) + return(all.equal(x,y)) } ## Handle factors, merging levels @@ -149,9 +151,9 @@ ## and use that one longestIndex <- which.max( sapply(colLevels, length) ) longestLevels <- colLevels[[longestIndex]] - allSubset <- sapply(colLevels[-longestIndex], + allSubset <- all(sapply(colLevels[-longestIndex], function(l) all(l %in% longestLevels) - ) + )) if(allSubset) { if("ordered" %in% colClass) Modified: pkg/gtools/man/smartbind.Rd =================================================================== --- pkg/gtools/man/smartbind.Rd 2015-07-22 00:53:30 UTC (rev 2063) +++ pkg/gtools/man/smartbind.Rd 2015-08-08 01:44:08 UTC (rev 2064) @@ -5,10 +5,11 @@ Efficient rbind of data frames, even if the column names don't match } \usage{ -smartbind(..., fill=NA, sep=':', verbose=FALSE) +smartbind(..., list, fill=NA, sep=':', verbose=FALSE) } \arguments{ \item{\dots}{Data frames to combine} + \item{list}{List containing data frames to combine} \item{fill}{Value to use when 'filling' missing columns. Defaults to \code{NA}. } \item{sep}{Character string used to separate column names when pasting From noreply at r-forge.r-project.org Sat Aug 8 03:47:44 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sat, 8 Aug 2015 03:47:44 +0200 (CEST) Subject: [R-gregmisc-commits] r2065 - in pkg/gtools: . man Message-ID: <20150808014744.DF7C91877E2@r-forge.r-project.org> Author: warnes Date: 2015-08-08 03:47:43 +0200 (Sat, 08 Aug 2015) New Revision: 2065 Modified: pkg/gtools/DESCRIPTION pkg/gtools/man/smartbind.Rd Log: Add example of using 'list' argument to smartbind() man page. Modified: pkg/gtools/DESCRIPTION =================================================================== --- pkg/gtools/DESCRIPTION 2015-08-08 01:44:08 UTC (rev 2064) +++ pkg/gtools/DESCRIPTION 2015-08-08 01:47:43 UTC (rev 2065) @@ -22,8 +22,8 @@ - efficient 'rbind' of data frames, even if the column names don't match ('smartbind'), - generate significance stars from p-values ('stars.pval'), - convert characters to/from ASCII codes. -Version: 3.5.0 -Date: 2015-05-26 +Version: 3.6.0 +Date: 2015-08-07 Author: Gregory R. Warnes, Ben Bolker, and Thomas Lumley Maintainer: Gregory R. Warnes License: GPL-2 Modified: pkg/gtools/man/smartbind.Rd =================================================================== --- pkg/gtools/man/smartbind.Rd 2015-08-08 01:44:08 UTC (rev 2064) +++ pkg/gtools/man/smartbind.Rd 2015-08-08 01:47:43 UTC (rev 2065) @@ -76,9 +76,11 @@ # But smartbind will 'do the right thing' df <- do.call("smartbind",Z) df + + # Equivalent call: + df <- smartbind(list=Z) + } } -% Add one or more standard keywords, see file 'KEYWORDS' in the -% R documentation directory. \keyword{manip} From noreply at r-forge.r-project.org Sat Aug 8 05:14:15 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sat, 8 Aug 2015 05:14:15 +0200 (CEST) Subject: [R-gregmisc-commits] r2066 - pkg/gtools/R Message-ID: <20150808031415.CEE1A185852@r-forge.r-project.org> Author: warnes Date: 2015-08-08 05:14:02 +0200 (Sat, 08 Aug 2015) New Revision: 2066 Modified: pkg/gtools/R/smartbind.R Log: - Improve assignment of default names in smartbind. - Disambiguate 'list' into an object named 'list' and the function base::list() in smartbind(). Modified: pkg/gtools/R/smartbind.R =================================================================== --- pkg/gtools/R/smartbind.R 2015-08-08 01:47:43 UTC (rev 2065) +++ pkg/gtools/R/smartbind.R 2015-08-08 03:14:02 UTC (rev 2066) @@ -4,11 +4,21 @@ smartbind <- function(..., list, fill=NA, sep=':', verbose=FALSE) { - data <-list(...) + data <- base::list(...) if(!missing(list)) - data <- modifyList(list, data) + { + data <- modifyList(list, data) + } + + defaultNames <- seq.int(length(data)) + if(is.null(names(data))) - names(data) <- as.character(1:length(data)) + names(data) <- defaultNames + + emptyNames <- names(data)=="" + if (any(emptyNames) ) + names(data)[emptyNames] <- defaultNames[emptyNames] + data <- lapply(data, function(x) if(is.matrix(x) || is.data.frame(x)) @@ -18,7 +28,7 @@ ) #retval <- new.env() - retval <- list() + retval <- base::list() rowLens <- unlist(lapply(data, nrow)) nrows <- sum(rowLens) @@ -37,9 +47,9 @@ blockIndex <- 1 for(block in data) { - colClassList [[blockIndex]] <- list() + colClassList [[blockIndex]] <- base::list() factorColumnList[[blockIndex]] <- character(length=0) - factorLevelList [[blockIndex]] <- list() + factorLevelList [[blockIndex]] <- base::list() if(verbose) print(head(block)) end <- start+nrow(block)-1 From noreply at r-forge.r-project.org Sat Aug 8 07:01:12 2015 From: noreply at r-forge.r-project.org (noreply at r-forge.r-project.org) Date: Sat, 8 Aug 2015 07:01:12 +0200 (CEST) Subject: [R-gregmisc-commits] r2067 - pkg/gtools/tests Message-ID: <20150808050112.B443A1876A0@r-forge.r-project.org> Author: warnes Date: 2015-08-08 07:01:12 +0200 (Sat, 08 Aug 2015) New Revision: 2067 Added: pkg/gtools/tests/smartbind_emptynames.R Log: Add half-hearted test file Added: pkg/gtools/tests/smartbind_emptynames.R =================================================================== --- pkg/gtools/tests/smartbind_emptynames.R (rev 0) +++ pkg/gtools/tests/smartbind_emptynames.R 2015-08-08 05:01:12 UTC (rev 2067) @@ -0,0 +1,10 @@ +library(devtools) +load_all("~/src/r-gregmisc/gtools") # for updated smartbind + +df1 <- data.frame(a=1, b=2, d=TRUE ) +df2 <- data.frame( b=7, c="YES", d=FALSE) +df3 <- data.frame( b=7, c="YES" ) + +smartbind( df1, df2, df3 ) +smartbind( df1=df1, df2, df3=df3 ) +