Dear Duncan,

Thank you for tracking down the source of this error.

Best,
 John

On Tue, 14 Jul 2015 07:22:21 -0400
 Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
> On 13/07/2015 9:42 PM, John Fox wrote:
> > Dear Duncan,
> > 
> > On Mon, 13 Jul 2015 20:00:02 -0400
> >  Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
> >> On 13/07/2015 7:35 PM, John Fox wrote:
> >>> Dear Duncan,
> >>>
> >>>> -----Original Message-----
> >>>> From: Duncan Murdoch [mailto:murdoch.dun...@gmail.com]
> >>>> Sent: July-13-15 7:01 PM
> >>>> To: John Fox; 'peter dalgaard'
> >>>> Cc: r-package-devel@r-project.org
> >>>> Subject: Re: [R-pkg-devel] "invalid 'envir' argument" note from R-devel
> >>>>
> >>>> It happened in r68597.  In my example, I hadn't imported the data()
> >>>> function from utils; when I did that, it was fixed.
> >>>>
> >>>> Not sure why the error is complaining about the envir argument.
> >>>
> >>>
> >>> Yes, importing data works for me too! It's odd that the problem didn't 
> >>> show
> >>> up as an undefined global symbol rather than as a note about the envir
> >>> argument. (I was fixing imports from standard packages when the problem
> >>> arose.)
> >>
> >> I'd guess that it's finding some other private function called data();
> >> that's probably worth fixing.
> > 
> > If you mean an unexported function named data() in the Rcmdr package, then 
> > I'm pretty sure that there is none -- and I just checked all of the many 
> > uses of the word "data" in the Rcmdr sources. Of course, I may have missed 
> > something or, more likely, misunderstood what you're suggesting.
> 
> I tracked it down to a bug in codetools.  The "envir" it is talking
> about is an argument to a different function, nothing to do with the
> argument to data().
> 
> I've passed it on to Luke Tierney, author of codetools.
> 
> Duncan Murdoch
> 
> > Best,
> >  John
> > 
> >>
> >> Duncan
> >>
> >>>
> >>> Thanks for tracking this down.
> >>>
> >>> John
> >>>
> >>>>
> >>>> Duncan Murdoch
> >>>>
> >>>> On 13/07/2015 6:47 PM, John Fox wrote:
> >>>>> Dear Duncan and Peter,
> >>>>>
> >>>>> I've just arrived at more or less the same thing:
> >>>>>
> >>>>>         foo <- function() data(package="MASS")
> >>>>>
> >>>>>         bar <- function() data(package="MASS", envir=.GlobalEnv)
> >>>>>
> >>>>>         baz <- function() data(package="MASS", envir=globalenv())
> >>>>>
> >>>>> all trigger the note when included with the Rcmdr sources:
> >>>>>
> >>>>>         * checking R code for possible problems ... NOTE
> >>>>>         bar: Error while checking: invalid 'envir' argument
> >>>>>         baz: Error while checking: invalid 'envir' argument
> >>>>>         foo: Error while checking: invalid 'envir' argument
> >>>>>
> >>>>> The envir argument to data() defaults to .GlobaEnv .
> >>>>>
> >>>>> I hope this helps,
> >>>>>  John
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: Duncan Murdoch [mailto:murdoch.dun...@gmail.com]
> >>>>>> Sent: July-13-15 6:32 PM
> >>>>>> To: John Fox; 'peter dalgaard'
> >>>>>> Cc: r-package-devel@r-project.org
> >>>>>> Subject: Re: [R-pkg-devel] "invalid 'envir' argument" note from R-
> >>>> devel
> >>>>>>
> >>>>>> On 13/07/2015 5:23 PM, John Fox wrote:
> >>>>>>> Dear Peter,
> >>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> From: peter dalgaard [mailto:pda...@gmail.com]
> >>>>>>>> Sent: July-13-15 4:52 PM
> >>>>>>>> To: John Fox
> >>>>>>>> Cc: r-package-devel@r-project.org
> >>>>>>>> Subject: Re: [R-pkg-devel] "invalid 'envir' argument" note from R-
> >>>>>> devel
> >>>>>>>>
> >>>>>>>> Yes, there was a similar note from Alexandra Kuznetsova a couple of
> >>>>>> days
> >>>>>>>
> >>>>>>> Sorry, I didn't notice that.
> >>>>>>>
> >>>>>>>> ago. Look unintentional, but it is not easy to spot what triggers
> >>>> it.
> >>>>>> If
> >>>>>>>> someone could cook up a minimal example, or - maybe easier given
> >>>> the
> >>>>>>>> relatively short timeframe - bisect their way to the exact svn
> >>>>>> revision
> >>>>>>>> that triggered it, it might help in getting it fixed.
> >>>>>>>
> >>>>>>> I'm afraid that I'm not set up to build R-devel and I'm about to
> >>>> leave
> >>>>>> town
> >>>>>>> for three weeks. I'll see if I can produce a simpler example
> >>>>>> triggering the
> >>>>>>> error, however.
> >>>>>>
> >>>>>> Hana Sevcikova posted a simple example.  I'll bisect on it.
> >>>>>>
> >>>>>> Here's her example:
> >>>>>>
> >>>>>> e <- new.env()
> >>>>>> data("mydataset", envir=e)
> >>>>>>
> >>>>>> I've substituted USArrests for "mydataset".
> >>>>>>
> >>>>>> Duncan Murdoch
> >>>>>>
> >>>>>>>
> >>>>>>> Thanks for this,
> >>>>>>>  John
> >>>>>>>
> >>>>>>>>
> >>>>>>>> -pd
> >>>>>>>>
> >>>>>>>>> On 13 Jul 2015, at 22:31 , John Fox <j...@mcmaster.ca> wrote:
> >>>>>>>>>
> >>>>>>>>> Dear list members,
> >>>>>>>>>
> >>>>>>>>> I'm getting a new note from R-devel that I haven't seen before
> >>>> when
> >>>>>>>> checking
> >>>>>>>>> the development version of the Rcmdr package:
> >>>>>>>>>
> >>>>>>>>>     * checking R code for possible problems ... NOTE
> >>>>>>>>>     readDataFromPackage: Error while checking: invalid 'envir'
> >>>> argument
> >>>>>>>>>
> >>>>>>>>> This note doesn't appear in R 3.2.1.
> >>>>>>>>>
> >>>>>>>>> My session info:
> >>>>>>>>>
> >>>>>>>>> -------- snip ----------
> >>>>>>>>>
> >>>>>>>>> R Under development (unstable) (2015-07-12 r68650)
> >>>>>>>>> Platform: x86_64-w64-mingw32/x64 (64-bit)
> >>>>>>>>> Running under: Windows 7 x64 (build 7601) Service Pack 1
> >>>>>>>>>
> >>>>>>>>> locale:
> >>>>>>>>> [1] LC_COLLATE=English_Canada.1252  LC_CTYPE=English_Canada.1252
> >>>>>>>>> LC_MONETARY=English_Canada.1252
> >>>>>>>>> [4] LC_NUMERIC=C                    LC_TIME=English_Canada.1252
> >>>>>>>>>
> >>>>>>>>> attached base packages:
> >>>>>>>>> [1] stats     graphics  grDevices utils     datasets  methods
> >>>> base
> >>>>>>>>>
> >>>>>>>>> loaded via a namespace (and not attached):
> >>>>>>>>> [1] tools_3.3.0
> >>>>>>>>>
> >>>>>>>>> -------- snip ----------
> >>>>>>>>>
> >>>>>>>>> I can't even localize the problem in readDataFromPackage(). There
> >>>>>> are
> >>>>>>>> only
> >>>>>>>>> two places in this function where there's a function call with an
> >>>>>>>> envir
> >>>>>>>>> argument, and I still get the note if I comment these out. As
> >>>> well,
> >>>>>>>>> readDataFromPackage() seems to work as intended -- there is no
> >>>>>> obvious
> >>>>>>>> error
> >>>>>>>>> in it.
> >>>>>>>>>
> >>>>>>>>> FWIW, here's readDataFromPackage(). The complete sources for the
> >>>>>>>> development
> >>>>>>>>> version of the Rcmdr package are on R-Forge.
> >>>>>>>>>
> >>>>>>>>> -------- snip ----------
> >>>>>>>>>
> >>>>>>>>> readDataFromPackage <- function() {
> >>>>>>>>>     env <- environment()
> >>>>>>>>>     datasets <- NULL
> >>>>>>>>>     initializeDialog(title=gettextRcmdr("Read Data From
> >>>> Package"))
> >>>>>>>>>     dsname <- tclVar("")
> >>>>>>>>>     package <- NULL
> >>>>>>>>>     enterFrame <- tkframe(top)
> >>>>>>>>>     entryDsname <- ttkentry(enterFrame, width="20",
> >>>>>>>> textvariable=dsname)
> >>>>>>>>>     packages <- sort(.packages())
> >>>>>>>>>     packages <- packages[! packages %in% c("base", "stats")]
> >>>>>>>>>     packages <- packages[sapply(packages, function(package){
> >>>>>>>>>                                             ds <-
> >>>>>>>>> data(package=package)$results
> >>>>>>>>>                                             if (nrow(ds) == 0)
> >>>>>>>>> return(FALSE)
> >>>>>>>>>                                             ds <- ds[, "Item"]
> >>>>>>>>>                                             valid <- sapply(ds,
> >>>>>>>>> is.valid.name)
> >>>>>>>>>                                             length(ds[valid]) >
> >>> 0
> >>>>>>>>>                                     })]
> >>>>>>>>>     packageDatasetFrame <- tkframe(top)
> >>>>>>>>>     packageFrame <- tkframe(packageDatasetFrame)
> >>>>>>>>>     max.height <- getRcmdr("variable.list.height")
> >>>>>>>>>     packageBox <- tklistbox(packageFrame, height=min(max.height,
> >>>>>>>>> length(packages)),
> >>>>>>>>>            exportselection="FALSE",
> >>>>>>>>>                     selectmode="single", background="white")
> >>>>>>>>>     packageScroll <- ttkscrollbar(packageFrame,
> >>>>>>>>>                     command=function(...) tkyview(packageBox,
> >>> ...))
> >>>>>>>>>     tkconfigure(packageBox, yscrollcommand=function(...)
> >>>>>>>>> tkset(packageScroll, ...))
> >>>>>>>>>     for (p in packages) tkinsert(packageBox, "end", p)
> >>>>>>>>>     datasetFrame <- tkframe(packageDatasetFrame)
> >>>>>>>>>     datasetBox <- tklistbox(datasetFrame, height=max.height,
> >>>>>>>>> exportselection="FALSE",
> >>>>>>>>>                     selectmode="single", background="white")
> >>>>>>>>>     datasetScroll <- ttkscrollbar(datasetFrame,
> >>>>>>>>>                     command=function(...) tkyview(datasetBox,
> >>> ...))
> >>>>>>>>>     tkconfigure(datasetBox, yscrollcommand=function(...)
> >>>>>>>>> tkset(datasetScroll, ...))
> >>>>>>>>>     onPackageSelect <- function(){
> >>>>>>>>>             assign("package",
> >>>>>>>>> packages[as.numeric(tkcurselection(packageBox)) + 1], envir=env)
> >>>>>>>>>             datasets <<- data(package=package)$results[,3]
> >>>>>>>>>             valid <- sapply(datasets, is.valid.name)
> >>>>>>>>>             datasets <<- datasets[valid]
> >>>>>>>>>             tkdelete(datasetBox, "0", "end")
> >>>>>>>>>             for (dataset in datasets) tkinsert(datasetBox,
> >>> "end",
> >>>>>>>>> dataset)
> >>>>>>>>>             tkconfigure(datasetBox, height=min(max.height,
> >>>>>>>>> length(datasets)))
> >>>>>>>>>             firstChar <- tolower(substr(datasets, 1, 1))
> >>>>>>>>>             len <- length(datasets)
> >>>>>>>>>             onLetter <- function(letter){
> >>>>>>>>>                     letter <- tolower(letter)
> >>>>>>>>>                     current <- 1 +
> >>>>>>>>> round(as.numeric(unlist(strsplit(tclvalue(tkyview(datasetBox) ), "
> >>>>>>>>> "))[1])*len)
> >>>>>>>>>                     mat <- match(letter,
> >>> firstChar[-(1:current)])
> >>>>>>>>>                     if (is.na(mat)) return()
> >>>>>>>>>                     tkyview.scroll(datasetBox, mat, "units")
> >>>>>>>>>             }
> >>>>>>>>>             onA <- function() onLetter("a")
> >>>>>>>>>             onB <- function() onLetter("b")
> >>>>>>>>>             onC <- function() onLetter("c")
> >>>>>>>>>             onD <- function() onLetter("d")
> >>>>>>>>>             onE <- function() onLetter("e")
> >>>>>>>>>             onF <- function() onLetter("f")
> >>>>>>>>>             onG <- function() onLetter("g")
> >>>>>>>>>             onH <- function() onLetter("h")
> >>>>>>>>>             onI <- function() onLetter("i")
> >>>>>>>>>             onJ <- function() onLetter("j")
> >>>>>>>>>             onK <- function() onLetter("k")
> >>>>>>>>>             onL <- function() onLetter("l")
> >>>>>>>>>             onM <- function() onLetter("m")
> >>>>>>>>>             onN <- function() onLetter("n")
> >>>>>>>>>             onO <- function() onLetter("o")
> >>>>>>>>>             onP <- function() onLetter("p")
> >>>>>>>>>             onQ <- function() onLetter("q")
> >>>>>>>>>             onR <- function() onLetter("r")
> >>>>>>>>>             onS <- function() onLetter("s")
> >>>>>>>>>             onT <- function() onLetter("t")
> >>>>>>>>>             onU <- function() onLetter("u")
> >>>>>>>>>             onV <- function() onLetter("v")
> >>>>>>>>>             onW <- function() onLetter("w")
> >>>>>>>>>             onX <- function() onLetter("x")
> >>>>>>>>>             onY <- function() onLetter("y")
> >>>>>>>>>             onZ <- function() onLetter("z")
> >>>>>>>>>             for (letter in c(letters, LETTERS)){
> >>>>>>>>>                     tkbind(datasetBox, paste("<", letter, ">",
> >>> sep=""),
> >>>>>>>>>                                     get(paste("on",
> >>> toupper(letter),
> >>>>>>>>> sep="")))
> >>>>>>>>>             }
> >>>>>>>>>             onClick <- function() tkfocus(datasetBox)
> >>>>>>>>>             tkbind(datasetBox, "<ButtonPress-1>", onClick)
> >>>>>>>>>     }
> >>>>>>>>>     onDatasetSelect <- function(){
> >>>>>>>>>             tclvalue(dsname) <-
> >>>>>>>>> datasets[as.numeric(tkcurselection(datasetBox)) + 1]
> >>>>>>>>>     }
> >>>>>>>>>     firstChar <- tolower(substr(packages, 1, 1))
> >>>>>>>>>     len <- length(packages)
> >>>>>>>>>     onLetter <- function(letter){
> >>>>>>>>>             letter <- tolower(letter)
> >>>>>>>>>             current <- 1 +
> >>>>>>>>> round(as.numeric(unlist(strsplit(tclvalue(tkyview(packageBox) ), "
> >>>>>>>>> "))[1])*len)
> >>>>>>>>>             mat <- match(letter, firstChar[-(1:current)])
> >>>>>>>>>             if (is.na(mat)) return()
> >>>>>>>>>             tkyview.scroll(packageBox, mat, "units")
> >>>>>>>>>     }
> >>>>>>>>>     onA <- function() onLetter("a")
> >>>>>>>>>     onB <- function() onLetter("b")
> >>>>>>>>>     onC <- function() onLetter("c")
> >>>>>>>>>     onD <- function() onLetter("d")
> >>>>>>>>>     onE <- function() onLetter("e")
> >>>>>>>>>     onF <- function() onLetter("f")
> >>>>>>>>>     onG <- function() onLetter("g")
> >>>>>>>>>     onH <- function() onLetter("h")
> >>>>>>>>>     onI <- function() onLetter("i")
> >>>>>>>>>     onJ <- function() onLetter("j")
> >>>>>>>>>     onK <- function() onLetter("k")
> >>>>>>>>>     onL <- function() onLetter("l")
> >>>>>>>>>     onM <- function() onLetter("m")
> >>>>>>>>>     onN <- function() onLetter("n")
> >>>>>>>>>     onO <- function() onLetter("o")
> >>>>>>>>>     onP <- function() onLetter("p")
> >>>>>>>>>     onQ <- function() onLetter("q")
> >>>>>>>>>     onR <- function() onLetter("r")
> >>>>>>>>>     onS <- function() onLetter("s")
> >>>>>>>>>     onT <- function() onLetter("t")
> >>>>>>>>>     onU <- function() onLetter("u")
> >>>>>>>>>     onV <- function() onLetter("v")
> >>>>>>>>>     onW <- function() onLetter("w")
> >>>>>>>>>     onX <- function() onLetter("x")
> >>>>>>>>>     onY <- function() onLetter("y")
> >>>>>>>>>     onZ <- function() onLetter("z")
> >>>>>>>>>     for (letter in c(letters, LETTERS)){
> >>>>>>>>>             tkbind(packageBox, paste("<", letter, ">", sep=""),
> >>>>>>>>>                             get(paste("on", toupper(letter),
> >>> sep="")))
> >>>>>>>>>     }
> >>>>>>>>>     onClick <- function() tkfocus(packageBox)
> >>>>>>>>>     tkbind(packageBox, "<ButtonPress-1>", onClick)
> >>>>>>>>>     onOK <- function(){
> >>>>>>>>>             datasetName <-
> >>>>>>>>> datasets[as.numeric(tkcurselection(datasetBox)) + 1]
> >>>>>>>>>             dsnameValue <- tclvalue(dsname)
> >>>>>>>>>             if (dsnameValue != "" && is.null(package)){
> >>>>>>>>>                     closeDialog()
> >>>>>>>>>                     if (is.element(dsnameValue, listDataSets()))
> >>> {
> >>>>>>>>>                             if ("no" ==
> >>>>>>>>> tclvalue(checkReplace(dsnameValue, gettextRcmdr("Data set")))){
> >>>>>>>>>                                     if (GrabFocus())
> >>> tkgrab.release(top)
> >>>>>>>>>                                     tkdestroy(top)
> >>>>>>>>>                                     readDataFromPackage()
> >>>>>>>>>                                     return()
> >>>>>>>>>                             }
> >>>>>>>>>                     }
> >>>>>>>>>                     save.options <- options(warn=2)
> >>>>>>>>>                     check <-
> >>> try(eval(parse(text=logger(paste("data(",
> >>>>>>>>> dsnameValue, ")", sep=""))),
> >>>>>>>>>
> >>> envir=.GlobalEnv),
> >>>>>>>>> silent=TRUE)
> >>>>>>>>>                     options(save.options)
> >>>>>>>>>                     if (class(check) == "try-error"){
> >>>>>>>>>
> >>> errorCondition(recall=readDataFromPackage,
> >>>>>>>>>
> >>>>>>>>> message=sprintf(gettextRcmdr("Data set %s does not exit"),
> >>>>>>>> dsnameValue))
> >>>>>>>>>                             return()
> >>>>>>>>>                     }
> >>>>>>>>>                     activeDataSet(dsnameValue)
> >>>>>>>>>                     tkfocus(CommanderWindow())
> >>>>>>>>>             }
> >>>>>>>>>             else{
> >>>>>>>>>                     if (is.null(package)) {
> >>>>>>>>>
> >>> errorCondition(recall=readDataFromPackage,
> >>>>>>>>> message=gettextRcmdr("You must select a package."))
> >>>>>>>>>                             return()
> >>>>>>>>>                     }
> >>>>>>>>>                     if (length(datasetName) == 0) {
> >>>>>>>>>
> >>> errorCondition(recall=readDataFromPackage,
> >>>>>>>>> message=gettextRcmdr("You must select a data set.")    )
> >>>>>>>>>                             return()
> >>>>>>>>>                     }
> >>>>>>>>>                     if (is.element(datasetName, listDataSets()))
> >>> {
> >>>>>>>>>                             if ("no" ==
> >>>>>>>>> tclvalue(checkReplace(datasetName, gettextRcmdr("Data set")))){
> >>>>>>>>>                                     if (GrabFocus())
> >>> tkgrab.release(top)
> >>>>>>>>>                                     tkdestroy(top)
> >>>>>>>>>                                     readDataFromPackage()
> >>>>>>>>>                                     return()
> >>>>>>>>>                             }
> >>>>>>>>>                     }
> >>>>>>>>>                     closeDialog()
> >>>>>>>>>                     command <- paste("data(", datasetName, ',
> >>>>>>>>> package="', package, '")', sep="")
> >>>>>>>>>                     result <- justDoIt(command)
> >>>>>>>>>                     logger(command)
> >>>>>>>>>                     if (class(result)[1] !=  "try-error")
> >>>>>>>>> activeDataSet(datasetName)
> >>>>>>>>>                     tkfocus(CommanderWindow())
> >>>>>>>>>             }
> >>>>>>>>>     }
> >>>>>>>>>     onDataHelp <- function(){
> >>>>>>>>>    datasetName <- datasets[as.numeric(tkcurselection(datasetBox))
> >>>> +
> >>>>>> 1]
> >>>>>>>>>             dsnameValue <- tclvalue(dsname)
> >>>>>>>>>             if (dsnameValue == "") dsnameValue <- datasetName
> >>>>>>>>>             if (length(dsnameValue) == 0)
> >>> Message(gettextRcmdr("No
> >>>> data
> >>>>>>>>> set selected."), type="warning")
> >>>>>>>>>             else if (is.null(package))
> >>> doItAndPrint(paste('help("',
> >>>>>>>>> dsnameValue, '")', sep=""))
> >>>>>>>>>             else doItAndPrint(paste('help("', dsnameValue, '",
> >>>>>>>>> package="', package, '")', sep=""))
> >>>>>>>>>     }
> >>>>>>>>>     OKCancelHelp(helpSubject="data")
> >>>>>>>>>     dataHelpButton <- buttonRcmdr(top, text=gettextRcmdr("Help
> >>> on
> >>>>>>>>> selected data set"), command=onDataHelp)
> >>>>>>>>>     tkgrid(labelRcmdr(packageDatasetFrame,
> >>>> text=gettextRcmdr("Package
> >>>>>>>>> (Double-click to select)"), fg=getRcmdr("title.color"),
> >>>>>>>>> font="RcmdrTitleFont"),
> >>>>>>>>>                     labelRcmdr(packageDatasetFrame, text="   "),
> >>>>>>>>> labelRcmdr(packageDatasetFrame, text=gettextRcmdr("Data set
> >>>> (Double-
> >>>>>>>> click to
> >>>>>>>>> select)"),
> >>>>>>>>>                                     fg=getRcmdr("title.color"),
> >>>>>>>>> font="RcmdrTitleFont"), sticky="w")
> >>>>>>>>>     tkgrid(packageBox, packageScroll, sticky="nw")
> >>>>>>>>>     tkgrid(datasetBox, datasetScroll, sticky="nw")
> >>>>>>>>>     tkgrid(packageFrame, labelRcmdr(packageDatasetFrame, text="
> >>>> "),
> >>>>>>>>> datasetFrame, sticky="nw")
> >>>>>>>>>     tkgrid(packageDatasetFrame, sticky="w")
> >>>>>>>>>     tkgrid(labelRcmdr(top, text=gettextRcmdr("OR"), fg="red"),
> >>>>>>>>> sticky="w")
> >>>>>>>>>     tkgrid(labelRcmdr(enterFrame, text=gettextRcmdr("Enter name
> >>>> of data
> >>>>>>>>> set:  "), fg=getRcmdr("title.color"), font="RcmdrTitleFont"),
> >>>>>>>> entryDsname,
> >>>>>>>>> sticky="w")
> >>>>>>>>>     tkgrid(enterFrame, sticky="w")
> >>>>>>>>>     tkgrid(dataHelpButton, sticky="w")
> >>>>>>>>>     tkgrid(buttonsFrame, sticky="ew")
> >>>>>>>>>     tkgrid.configure(packageScroll, sticky="ns")
> >>>>>>>>>     tkgrid.configure(datasetScroll, sticky="ns")
> >>>>>>>>>     tkbind(packageBox, "<Double-ButtonPress-1>",
> >>> onPackageSelect)
> >>>>>>>>>     tkbind(datasetBox, "<Double-ButtonPress-1>",
> >>> onDatasetSelect)
> >>>>>>>>>     dialogSuffix(focus=entryDsname)
> >>>>>>>>> }
> >>>>>>>>>
> >>>>>>>>> -------- snip ----------
> >>>>>>>>>
> >>>>>>>>> Any insight into the problem would be appreciated.
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>> John
> >>>>>>>>>
> >>>>>>>>> -----------------------------------------------
> >>>>>>>>> John Fox, Professor
> >>>>>>>>> McMaster University
> >>>>>>>>> Hamilton, Ontario, Canada
> >>>>>>>>> http://socserv.socsci.mcmaster.ca/jfox/
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> ---
> >>>>>>>>> This email has been checked for viruses by Avast antivirus
> >>>> software.
> >>>>>>>>> https://www.avast.com/antivirus
> >>>>>>>>>
> >>>>>>>>> ______________________________________________
> >>>>>>>>> R-package-devel@r-project.org mailing list
> >>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Peter Dalgaard, Professor,
> >>>>>>>> Center for Statistics, Copenhagen Business School
> >>>>>>>> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> >>>>>>>> Phone: (+45)38153501
> >>>>>>>> Email: pd....@cbs.dk  Priv: pda...@gmail.com
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> ---
> >>>>>>> This email has been checked for viruses by Avast antivirus software.
> >>>>>>> https://www.avast.com/antivirus
> >>>>>>>
> >>>>>>> ______________________________________________
> >>>>>>> R-package-devel@r-project.org mailing list
> >>>>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
> >>>>>>>
> >>>>>
> >>>>>
> >>>>> ---
> >>>>> This email has been checked for viruses by Avast antivirus software.
> >>>>> https://www.avast.com/antivirus
> >>>>>
> >>>
> >>>
> >>> ---
> >>> This email has been checked for viruses by Avast antivirus software.
> >>> https://www.avast.com/antivirus
> >>>
> >>
> > 
> > ------------------------------------------------
> > John Fox, Professor
> > McMaster University
> > Hamilton, Ontario, Canada
> > http://socserv.mcmaster.ca/jfox/
> >     
> >     
> >     
> > 
>

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to