groupedData constructor from a function (PR#1741)

dieter.menne@menne-biomed.de dieter.menne@menne-biomed.de
Thu, 4 Jul 2002 16:00:02 +0200 (MET DST)


Full_Name: Dieter Menne
Version: 1.5.1
OS: win2000
Submission from: (NULL) (212.185.252.139)


Package nlme, version 3.1-27 (but also in earlier)
Calling the groupedData constructor from a function may fail if the formula 
is not passed explicitely. Below a suggested patch 

Suggestions for patches are in the archives, by Thomas Lumley and saikat.
# http://finzi.psych.upenn.edu/R/Rhelp/archive/2250.html
Both are essentially correct, but probably untested (typos).

library(nlme)
data(Oxboys)
# make it a non-grouped data frame
ox<-as.data.frame(Oxboys)

# Changed by DM. See also
# http://finzi.psych.upenn.edu/R/Rhelp/archive/2250.html
# but there were a few typos in there
groupedData<-
function (formula, data = sys.parent(1), order.groups = TRUE, 
    FUN = function(x) max(x, na.rm = TRUE), outer = NULL, inner = NULL, 
    labels = NULL, units = NULL) 
{
    if (!(inherits(formula, "formula") && length(formula) == 
        3)) {
        stop("first argument to groupedData must be a two-sided formula")
    }
    if (is.null(grpForm <- getGroupsFormula(formula, asList = TRUE))) {
        stop("Right hand side of first argument must be a conditional
expression")
    }
    ## patched part follow (may not work with S)
    mCall <- match.call()
    if (length(grpForm) == 1) {
      mCall[[1]] <- as.name("nfGroupedData") 
      eval(mCall, envir = parent.frame()) 
    }
    else {
      mCall[[1]] <- as.name("nmGroupedData") 
      eval(mCall, envir = parent.frame()) 
    }
    #######
}
 
ProcessPar<-function(par)
{
  form1<-as.formula(paste(par,"~age|Subject"))
  oxg3<-groupedData(formula=form1, data=ox)
  # Do processing with 
  print(str(oxg3))
}


# Works only with the patch to groupedData constructor
ProcessPar("height")



-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._