Yes, there was a similar note from Alexandra Kuznetsova a couple of days 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.
-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 ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel