diff --git a/DESCRIPTION b/DESCRIPTION index 36bc530..562f1ca 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -2,7 +2,7 @@ Package: PivotalR Type: Package Title: R front-end to PostgreSQL and Pivotal (Greenplum) database, wrapper for MADlib -Version: 0.1.15.43 +Version: 0.1.15.44 Date: 2014-03-10 Author: Predictive Analytics Team at Pivotal Inc. , with contributions from Data Scientist Team at Pivotal Inc. diff --git a/R/db_conn-generic.R b/R/db_conn-generic.R index b4011e8..d59e427 100644 --- a/R/db_conn-generic.R +++ b/R/db_conn-generic.R @@ -230,16 +230,16 @@ db.disconnect <- function (conn.id = 1, verbose = TRUE, force = FALSE) dbms.str <- dbms(conn.id = conn.id) if (gsub(".*(HAWQ).*", "\\1", dbms.str, perl=T) == "HAWQ") { db.str <- "HAWQ" - version.str <- gsub(".*HAWQ[^\\d]+([\\d\\.]+).*", "\\1", + version.str <- gsub(".*HAWQ[^\\d]+?([\\d\\.]+?).*", "\\1", dbms.str, perl=T) } else if (gsub(".*(Greenplum).*", "\\1", dbms.str, perl=T) == "Greenplum") { db.str <- "Greenplum" - version.str <- gsub(".*Greenplum[^\\d]+([\\d\\.]+).*", + version.str <- gsub(".*Greenplum[^\\d]+?([\\d\\.]+?).*", "\\1", dbms.str, perl=T) } else { db.str <- "PostgreSQL" - version.str <- gsub(".*PostgreSQL[^\\d]+([\\d\\.]+).*", + version.str <- gsub(".*PostgreSQL[^\\d]+?([\\d\\.]+?).*", "\\1", dbms.str, perl=T) } list(db.str = db.str, version.str = version.str) diff --git a/R/elnet-cd.R b/R/elnet-cd.R index da12e0f..2718507 100644 --- a/R/elnet-cd.R +++ b/R/elnet-cd.R @@ -99,7 +99,7 @@ for (i in seq_len(length(col.name))) if (col.name[i] != appear[i]) rows <- gsub(col.name[i], appear[i], rows) - rows <- gsub("\\(([^\\[\\]]*)\\)\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("\\(([^\\[\\]]*?)\\)\\[(\\d+?)\\]", "\\1[\\2]", rows) rows <- .reverse.consistent.func(rows) rows <- gsub("\\s", "", rows) names(rst$coef) <- rows @@ -227,7 +227,7 @@ for (i in seq_len(length(col.name))) if (col.name[i] != appear[i]) rows <- gsub(col.name[i], appear[i], rows) - rows <- gsub("\\(([^\\[\\]]*)\\)\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("\\(([^\\[\\]]*?)\\)\\[(\\d+?)\\]", "\\1[\\2]", rows) rows <- .reverse.consistent.func(rows) rows <- gsub("\\s", "", rows) names(rst$coef) <- rows @@ -269,7 +269,7 @@ .convert.to.double.array <- function (x) { - as.numeric(strsplit(gsub("^\\{(.*)\\}$", "\\1", x), ",")[[1]]) + as.numeric(strsplit(gsub("^\\{(.*?)\\}$", "\\1", x), ",")[[1]]) } ## ---------------------------------------------------------------------- diff --git a/R/madlib-elnet.R b/R/madlib-elnet.R index 64e09ca..090dcf8 100644 --- a/R/madlib-elnet.R +++ b/R/madlib-elnet.R @@ -115,7 +115,7 @@ madlib.elnet <- function (formula, data, for (i in seq_len(length(col.name))) if (col.name[i] != appear[i]) rows <- gsub(col.name[i], appear[i], rows) - rows <- gsub("\\(([^\\[\\]]*)\\)\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("\\(([^\\[\\]]*?)\\)\\[(\\d+?)\\]", "\\1[\\2]", rows) rows <- .reverse.consistent.func(rows) rows <- gsub("\\s", "", rows) names(rst$coef) <- rows diff --git a/R/madlib-glm.R b/R/madlib-glm.R index 18ce277..4293cf7 100644 --- a/R/madlib-glm.R +++ b/R/madlib-glm.R @@ -246,7 +246,7 @@ print.logregr.madlib.grps <- function (x, for (j in seq_len(length(x[[i]]$col.name))) if (x[[i]]$col.name[j] != x[[i]]$appear[j]) rows <- gsub(x[[i]]$col.name[j], x[[i]]$appear[j], rows) - rows <- .gsub("\\(([^\\[\\]]*)\\)\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("\\(([^\\[\\]]*?)\\)\\[(\\d+?)\\]", "\\1[\\2]", rows) rows <- .reverse.consistent.func(rows) rows <- gsub("\\s", "", rows) ind.width <- .max.width(rows) @@ -309,7 +309,7 @@ print.logregr.madlib <- function (x, for (i in seq_len(length(x$col.name))) if (x$col.name[i] != x$appear[i]) rows <- gsub(x$col.name[i], x$appear[i], rows) - rows <- gsub("\\(([^\\[\\]]*)\\)\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("\\(([^\\[\\]]*?)\\)\\[(\\d+?)\\]", "\\1[\\2]", rows) rows <- .reverse.consistent.func(rows) rows <- gsub("\\s", "", rows) ind.width <- .max.width(rows) diff --git a/R/madlib-lm.R b/R/madlib-lm.R index debd3d7..48af363 100644 --- a/R/madlib-lm.R +++ b/R/madlib-lm.R @@ -238,7 +238,7 @@ print.lm.madlib.grps <- function (x, for (j in seq_len(length(x[[i]]$col.name))) if (x[[i]]$col.name[j] != x[[i]]$appear[j]) rows <- gsub(x[[i]]$col.name[j], x[[i]]$appear[j], rows) - rows <- .gsub("\\(([^\\[\\]]*)\\)\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("\\(([^\\[\\]]*?)\\)\\[(\\d+?)\\]", "\\1[\\2]", rows) rows <- .reverse.consistent.func(rows) rows <- gsub("\\s", "", rows) ind.width <- .max.width(rows) @@ -305,7 +305,7 @@ print.lm.madlib <- function (x, for (i in seq_len(length(x$col.name))) if (x$col.name[i] != x$appear[i]) rows <- gsub(x$col.name[i], x$appear[i], rows) - rows <- gsub("\\(([^\\[\\]]*)\\)\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("\\(([^\\[\\]]*?)\\)\\[(\\d+?)\\]", "\\1[\\2]", rows) rows <- .reverse.consistent.func(rows) rows <- gsub("\\s", "", rows) ind.width <- .max.width(rows) @@ -362,7 +362,7 @@ show.lm.madlib <- function (object) for (i in seq_len(length(col.name))) if (col.name[i] != appear[i]) rows <- gsub(col.name[i], appear[i], rows) - rows <- gsub("\\(([^\\[\\]]*)\\)\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("\\(([^\\[\\]]*?)\\)\\[(\\d+?)\\]", "\\1[\\2]", rows) rows <- .reverse.consistent.func(rows) rows <- gsub("\\s", "", rows) rows diff --git a/R/margins.R b/R/margins.R index 18d46be..9df36cd 100644 --- a/R/margins.R +++ b/R/margins.R @@ -11,7 +11,7 @@ margins <- function (model, dydx = ~ Vars(model), newdata = model$data, { vars <- gsub("::[\\w\\s]+", "", ind.vars, perl = T) vars <- gsub("\"", "`", vars) - vars <- .gsub("\\(`([^\\[\\]]*)`\\)\\[(\\d+)\\]", "`\"\\1\"[\\2]`", vars) + vars <- gsub("\\(`([^\\[\\]]*?)`\\)\\[(\\d+?)\\]", "`\"\\1\"[\\2]`", vars) vars <- gsub("\\s", "", vars) vars <- .reverse.consistent.func(vars) vars @@ -49,7 +49,7 @@ Vars <- function(model) v, perl = TRUE) for (i in seq_along(model.vars)) v <- gsub(no.conflict.names[i], model.vars[i], v, perl = TRUE) - v <- .gsub("([^`]|^)\"([^\\[\\]]*)\"\\[(\\d+)\\]([^`]|$)", + v <- gsub("([^`]|^)\"([^\\[\\]]*?)\"\\[(\\d+?)\\]([^`]|$)", "(`\"\\2\"[\\3]`)", v, perl = TRUE) v } @@ -114,9 +114,9 @@ Vars <- function(model) } else if (grepl("^[^\\[\\]]*\\[[^\\[\\]]*\\]$", f.vars[i], perl = T)) { var <- gsub("`", "", f.vars[i]) - x.str <- .gsub("([^\\[\\]]*)\\[[^\\[\\]]*\\]", "\\1", var, + x.str <- gsub("([^\\[\\]]*?)\\[[^\\[\\]]*?\\]", "\\1", var, perl = TRUE) - idx <- .gsub("[^\\[\\]]*\\[([^\\[\\]]*)\\]", "\\1", var, + idx <- gsub("[^\\[\\]]*?\\[([^\\[\\]]*?)\\]", "\\1", var, perl = TRUE) idx <- eval(parse(text = idx)) expand.vars <- c(expand.vars, paste("`\"", .strip(x.str, "\""), @@ -154,8 +154,8 @@ Vars <- function(model) function(i) { sub <- factors[factors[,1] == factors[i,1],] paste("\"", factors[i,1], - .gsub(paste(".*(", .unique.pattern(), ").*", sep = ""), - "\\1", factors[i,3], perl = TRUE), + gsub(paste(".*(", .unique.pattern(), ").*", sep = ""), + "\\1", factors[i,3], perl = TRUE), factors[i,4], "\"", sep = "") })) @@ -220,10 +220,10 @@ Vars <- function(model) "or the table column names!") expand.vars <- paste("\"", expand.vars, "\"", sep = "") - expand.vars <- .gsub("\"`\"([^\\[\\]]*)\"\\[([^\\[\\]]*)\\]`\"", "\"\\1\"[\\2]", - expand.vars, perl = TRUE) - expand.vars <- .gsub("\"`([^\\[\\]]*)\\[([^\\[\\]]*)\\]`\"", "\"\\1\"[\\2]", - expand.vars, perl = TRUE) + expand.vars <- gsub("\"`\"([^\\[\\]]*?)\"\\[([^\\[\\]]*?)\\]`\"", "\"\\1\"[\\2]", + expand.vars, perl = TRUE) + expand.vars <- gsub("\"`([^\\[\\]]*?)\\[([^\\[\\]]*?)\\]`\"", "\"\\1\"[\\2]", + expand.vars, perl = TRUE) return (list(vars = expand.vars, is.ind = expand.is.ind, is.factor = is.factor, factors = factors, @@ -264,8 +264,8 @@ margins.lm.madlib <- function(model, dydx = ~ Vars(model), avgs <- lk(mean(newdata)) avgs <- .expand.avgs(avgs) names(avgs) <- paste("\"", gsub("_avg$", "", names(avgs)), "\"", sep = "") - names(avgs) <- .gsub("([^`]|^)\"([^\\[\\]]*)_avg\\[(\\d+)\\]\"([^`]|$)", - "\"\\2\"[\\3]", names(avgs)) + names(avgs) <- gsub("([^`]|^)\"([^\\[\\]]*?)_avg\\[(\\d+?)\\]\"([^`]|$)", + "\"\\2\"[\\3]", names(avgs)) ## } else if (length(at) > 0) { ## at.mean <- TRUE ## avgs <- at @@ -308,7 +308,7 @@ margins.lm.madlib <- function(model, dydx = ~ Vars(model), rows[f$is.factor][i], 1:2], collapse = ".") } - rows <- .gsub("([^\\[\\]]*)\"\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("([^\\[\\]]*?)\"\\[(\\d+?)\\]", "\\1[\\2]", rows) res <- data.frame(cbind(Estimate = mar, `Std. Error` = se, `t value` = t, `Pr(>|t|)` = p), row.names = rows, @@ -383,8 +383,8 @@ margins.logregr.madlib <- function(model, dydx = ~ Vars(model), avgs <- .expand.avgs(avgs) names(avgs) <- gsub("_avg$", "", names(avgs)) names(avgs) <- paste("\"", gsub("_avg$", "", names(avgs)), "\"", sep = "") - names(avgs) <- .gsub("([^`]|^)\"([^\\[\\]]*)_avg\\[(\\d+)\\]\"([^`]|$)", - "\"\\2\"[\\3]", names(avgs)) + names(avgs) <- gsub("([^`]|^)\"([^\\[\\]]*?)_avg\\[(\\d+?)\\]\"([^`]|$)", + "\"\\2\"[\\3]", names(avgs)) expr <- gsub("\\s", "", paste(deparse(eval(parse(text = paste("substitute(", expr, ", avgs)", sep = "")))), @@ -430,7 +430,7 @@ margins.logregr.madlib <- function(model, dydx = ~ Vars(model), rows[f$is.factor][i], 1:2], collapse = ".") } - rows <- .gsub("([^\\[\\]]*)\"\\[(\\d+)\\]", "\\1[\\2]", rows) + rows <- gsub("([^\\[\\]]*?)\"\\[(\\d+?)\\]", "\\1[\\2]", rows) res <- data.frame(cbind(Estimate = mar, `Std. Error` = se, `z value` = z, `Pr(>|z|)` = p), @@ -1022,10 +1022,10 @@ margins.logregr.madlib.grps <- function(model, dydx = ~ Vars(model), { unique.string <- .unique.pattern() if (grepl(unique.string, var, perl = TRUE)) { - res1 <- .gsub(paste("^(.*)", unique.string, ".*$", sep = ""), "\\1", - var, perl = TRUE) - res2 <- .gsub(paste("^.*", unique.string, "(.*)$", sep = ""), "\\1", - var, perl = TRUE) + res1 <- gsub(paste("^(.*)", unique.string, ".*$", sep = ""), "\\1", + var, perl = TRUE) + res2 <- gsub(paste("^.*", unique.string, "(.*)$", sep = ""), "\\1", + var, perl = TRUE) c(res1, res2) } else var diff --git a/R/utility-generic.R b/R/utility-generic.R index b8831b9..d324616 100644 --- a/R/utility-generic.R +++ b/R/utility-generic.R @@ -186,7 +186,7 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) .strip <- function (str, rm = "\\s") { rm.str <- paste("^", rm, "*(.*[^", rm, "])", rm, "*$", sep = "") - .gsub(rm.str, "\\1", str, perl = TRUE) + gsub(rm.str, "\\1", str, perl = TRUE) } ## ----------------------------------------------------------------------- @@ -199,9 +199,9 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) f.str <- strsplit(paste(deparse(formula), collapse = ""), "\\|")[[1]] ## f.str <- .replace.array(f.str, data) fstr <- f.str[1] - fstr <- .gsub("as\\.factor\\((((?!as\\.factor).)*)\\)", "factor(\\1)", + fstr <- gsub("as\\.factor\\((((?!as\\.factor).)*?)\\)", "factor(\\1)", fstr, perl = T) - fstr <- .gsub("([^\\.]|^)factor\\((((?!as\\.factor).)*)\\)", "\\1as.factor(\\2)", + fstr <- gsub("([^\\.]|^)factor\\((((?!as\\.factor).)*?)\\)", "\\1as.factor(\\2)", fstr, perl = T) f2 <- f.str[2] # grouping columns, might be NA @@ -216,9 +216,9 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) f2.labels <- attr(f2.terms, "term.labels") ## ## grouping column do not use factor - f2.labels <- .gsub("I\\((.*)\\)", "(\\1)", f2.labels, perl = T) - f2.labels <- .gsub("as\\.factor\\((.*)\\)", "(\\1)", f2.labels, perl = T) - f2.labels <- .gsub("factor\\((.*)\\)", "(\\1)", f2.labels, perl = T) + f2.labels <- gsub("I\\((.*?)\\)", "(\\1)", f2.labels, perl = T) + f2.labels <- gsub("as\\.factor\\((.*?)\\)", "(\\1)", f2.labels, perl = T) + f2.labels <- gsub("factor\\((.*?)\\)", "(\\1)", f2.labels, perl = T) grp.expr <- f2.labels for (i in seq_len(length(f2.labels))) { @@ -250,7 +250,7 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) ## f.labels <- gsub("`([^`]*)(\\[\\d+\\])`", "\"\\1\"\\2", f.labels) right.hand <- paste(f.labels, collapse = "+") if (refresh) { # second pass - right.hand <- .gsub("as\\.factor\\((((?!as\\.factor).)*)\\)", "(\\1)", right.hand, perl = T) + right.hand <- gsub("as\\.factor\\((((?!as\\.factor).)*?)\\)", "(\\1)", right.hand, perl = T) if (sum(data@.is.factor) > 0) { distinct <- list() @@ -295,9 +295,9 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) elm <- .regmatches(right.hand, gregexpr("as\\.factor\\s*\\([^\\(\\)]+\\)", right.hand, perl=T))[[1]] - col <- .strip(.gsub("as\\.factor\\s*\\(([^\\(\\)]+)\\)", "(\\1)", elm, + col <- .strip(gsub("as\\.factor\\s*\\(([^\\(\\)]+?)\\)", "(\\1)", elm, perl = T)) - col <- gsub("^\\((.*)\\)$", "\\1", col) + col <- gsub("^\\((.*?)\\)$", "\\1", col) if (!all(col %in% names(data))) stop("At least one of the variables cannot be set to be a factor ", "because either it does not exist in the data table ", @@ -310,7 +310,7 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) ## factors added by formula for (cl in col) data[[cl]] <- as.factor(data[[cl]]) - right.hand <- .gsub("as\\.factor\\((((?!as\\.factor).)*)\\)", "(\\1)", right.hand, perl = T) + right.hand <- gsub("as\\.factor\\((((?!as\\.factor).)*?)\\)", "(\\1)", right.hand, perl = T) ## right.hand <- gsub("factor\\((((?!factor).)*)\\)", "\\1", right.hand, perl = T) } @@ -322,16 +322,16 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) ## labels <- gsub(":", "*", labels, perl = T) # replace interaction : with * ## labels <- .gsub("\\[(\\d+)@(\\d+)\\]", "[\\1:\\2]", labels) labels <- .replace.colon(f.labels) - labels <- .gsub("I\\((.*)\\)", "(\\1)", labels, perl = T) # remove I() + labels <- gsub("I\\((.*?)\\)", "(\\1)", labels, perl = T) # remove I() ## vdata <- .expand.array(data) vdata <- data ## dependent variable ## factor does not play a role in dependent variable - dep.var <- .gsub("I\\((.*)\\)", "(\\1)", rownames(f.factors)[1], perl = T) - dep.var <- .gsub("as\\.factor\\((.*)\\)", "(\\1)", dep.var, perl = T) - dep.var <- .gsub("factor\\((.*)\\)", "(\\1)", dep.var, perl = T) + dep.var <- gsub("I\\((.*?)\\)", "(\\1)", rownames(f.factors)[1], perl = T) + dep.var <- gsub("as\\.factor\\((.*?)\\)", "(\\1)", dep.var, perl = T) + dep.var <- gsub("factor\\((.*?)\\)", "(\\1)", dep.var, perl = T) ## dep.var <- .replace.with.quotes(dep.var, data@.col.name) origin.dep <- dep.var @@ -360,7 +360,7 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) ## colnames(f.factors))), ## collapse = ", "), "))", sep = ""))) b <- eval(parse(text = paste("with(vdata, c(", - paste(.replace.colon(.gsub("I\\((.*)\\)", "(\\1)", + paste(.replace.colon(gsub("I\\((.*?)\\)", "(\\1)", rownames(f.factors)[rowSums(f.factors) == 0])), collapse = ", "), "))", sep = ""))) ## b2 <- eval(parse(text = paste("with(vdata, c(", @@ -396,7 +396,7 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) factor.full <- rep(TRUE, length(names(data))) if (!refresh) { model.vars <- .prepare.ind.vars(orig.labels) - model.vars <- .gsub("`\"([^\\[\\]]*)\"\\[(\\d+)\\]`", "`\\1[\\2]`", model.vars) + model.vars <- gsub("`\"([^\\[\\]]*?)\"\\[(\\d+?)\\]`", "`\\1[\\2]`", model.vars) vars <- unique(all.vars(parse(text = model.vars))) idx <- match(vars, names(data)) for (i in seq_len(length(idx))) { @@ -437,9 +437,9 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) .replace.colon <- function(s) { - r <- .gsub("(\\d+)\\s*:\\s*(\\d+)", "\\1@\\2", s) + r <- gsub("(\\d+)\\s*:\\s*(\\d+)", "\\1@\\2", s) r <- gsub(":", "*", r, perl = T) - r <- .gsub("(\\d+)@(\\d+)", "\\1:\\2", r) + r <- gsub("(\\d+)@(\\d+)", "\\1:\\2", r) r } @@ -489,19 +489,19 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) cols <- cols[n.order] for (i in seq_len(length(cols))) { col <- cols[i] - vars <- .gsub(paste(col, "([^_\\w]+)", sep = ""), + vars <- gsub(paste(col, "([^_\\w]+?)", sep = ""), paste("\"", col, "\"\\1", sep = ""), vars, perl = TRUE) - vars <- .gsub(paste("([_\\w]+)\"", col, "\"", sep = ""), + vars <- gsub(paste("([_\\w]+?)\"", col, "\"", sep = ""), paste("\\1", col, sep = ""), vars, perl = TRUE) - vars <- .gsub(paste("([^_\\w\"]+)", col, sep = ""), + vars <- gsub(paste("([^_\\w\"]+?)", col, sep = ""), paste("\\1\"", col, "\"", sep = ""), vars, perl = TRUE) - vars <- .gsub(paste("\"", col, "\"([_\\w]+)", sep = ""), + vars <- gsub(paste("\"", col, "\"([_\\w]+?)", sep = ""), paste(col, "\\1", sep = ""), vars, perl = TRUE) - vars <- .gsub(paste("^", col, "$", sep = ""), + vars <- gsub(paste("^", col, "$", sep = ""), paste("\"", col, "\"", sep = ""), vars, perl = TRUE) } @@ -612,7 +612,7 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) s <- paste("`", data@.col.name[i], "[", seq_len(l) - 1 + n0, "]`", sep = "", collapse = " + ") - fstr <- .gsub(paste(data@.col.name[i], "\\s*([^\\[]|$)", + fstr <- gsub(paste(data@.col.name[i], "\\s*([^\\[]|$)", sep = ""), paste("(", s, ")\\1", sep = ""), fstr) } @@ -625,8 +625,8 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) ## whether two where strings are equivalent .eql.where <- function (where1, where2) { - s <- .gsub("^not \\((.*)\\)$", "\\1", where1, perl = TRUE) - t <- .gsub("^not \\((.*)\\)$", "\\1", where2, perl = TRUE) + s <- gsub("^not \\((.*?)\\)$", "\\1", where1, perl = TRUE) + t <- gsub("^not \\((.*?)\\)$", "\\1", where2, perl = TRUE) if (s != where1 && t != where2) { return (.eql.where(s, t)) } else if ((s != where1 && t == where2) || @@ -634,15 +634,15 @@ arraydb.to.arrayr <- function (str, type = "double", n = 1) return (FALSE) } - s1 <- .gsub("^\\((.*)\\) (and|or) \\((.*)\\)$", "\\1", s, perl = TRUE) + s1 <- gsub("^\\((.*?)\\) (and|or) \\((.*?)\\)$", "\\1", s, perl = TRUE) if (s1 == s) return (s == t) - s2 <- .gsub("^\\((.*)\\) (and|or) \\((.*)\\)$", "\\3", s, perl = TRUE) - ss <- .gsub("^\\((.*)\\) (and|or) \\((.*)\\)$", "\\2", s, perl = TRUE) + s2 <- gsub("^\\((.*?)\\) (and|or) \\((.*?)\\)$", "\\3", s, perl = TRUE) + ss <- gsub("^\\((.*?)\\) (and|or) \\((.*?)\\)$", "\\2", s, perl = TRUE) - t1 <- .gsub("^\\((.*)\\) (and|or) \\((.*)\\)$", "\\1", t, perl = TRUE) + t1 <- gsub("^\\((.*?)\\) (and|or) \\((.*?)\\)$", "\\1", t, perl = TRUE) if (t1 == t) return (FALSE) - t2 <- .gsub("^\\((.*)\\) (and|or) \\((.*)\\)$", "\\3", t, perl = TRUE) - tt <- .gsub("^\\((.*)\\) (and|or) \\((.*)\\)$", "\\2", t, perl = TRUE) + t2 <- gsub("^\\((.*?)\\) (and|or) \\((.*?)\\)$", "\\3", t, perl = TRUE) + tt <- gsub("^\\((.*?)\\) (and|or) \\((.*?)\\)$", "\\2", t, perl = TRUE) if ((.eql.where(s1, t1) && .eql.where(s2, t2) && ss == tt) || (.eql.where(s1, t2) && .eql.where(s2, t1) && ss == tt)) diff --git a/R/vcov.R b/R/vcov.R index 52eaf01..03668f2 100644 --- a/R/vcov.R +++ b/R/vcov.R @@ -38,7 +38,7 @@ ## ("," %.% object$ind.vars) %+% "))"))) model.vars <- gsub("::[\\w\\s]+", "", object$ind.vars, perl = T) model.vars <- gsub("\"", "`", model.vars) - model.vars <- gsub("\\(`([^\\[\\]]*)`\\)\\[(\\d+)\\]", "\\1[\\2]", model.vars) + model.vars <- gsub("\\(`([^\\[\\]]*?)`\\)\\[(\\d+?)\\]", "\\1[\\2]", model.vars) model.vars <- .reverse.consistent.func(model.vars) res <- .combine.list(eval(parse(text = "with(x, c(" %+% ("," %.% model.vars) %+% "))"))) @@ -82,7 +82,7 @@ vcov.lm.madlib <- function(object, na.action = NULL, ...) model.vars <- gsub("::[\\w\\s]+", "", object$ind.vars, perl = T) model.vars <- gsub("\"", "`", model.vars) - model.vars <- gsub("\\(`(.*)`\\)\\[(\\d+)\\]", "\\1[\\2]", model.vars) + model.vars <- gsub("\\(`(.*?)`\\)\\[(\\d+?)\\]", "\\1[\\2]", model.vars) model.vars <- .reverse.consistent.func(model.vars) if (object$has.intercept) rows <- c("(Intercept)", model.vars) @@ -116,7 +116,7 @@ vcov.logregr.madlib <- function(object, na.action = NULL, ...) model.vars <- gsub("::[\\w\\s]+", "", object$ind.vars, perl = T) model.vars <- gsub("\"", "`", model.vars) - model.vars <- gsub("\\(`(.*)`\\)\\[(\\d+)\\]", "\\1[\\2]", model.vars) + model.vars <- gsub("\\(`(.*?)`\\)\\[(\\d+?)\\]", "\\1[\\2]", model.vars) model.vars <- .reverse.consistent.func(model.vars) if (object$has.intercept) rows <- c("(Intercept)", model.vars)