I've put my tiny package back up, but it likely is doing same thing as Bill Dunlap's. I took it off as a cleanup when I thought the issue resolved.
http://web.ncf.ca/fh448/jfiles/fchk_2019-6.5.tar.gz Seems I've disturbed the ant's nest. JN On 2019-06-07 1:53 p.m., William Dunlap wrote: > I've attached a package, ppp_0.1.tar.gz, which probably will not get through > to R-help, that illustrates this. > It contains one function which, by default, triggers a condition-length>1 > issue: > f <- function(x = 1:3) > { > if (x > 1) { > x <- -x > } > stop("this function always gives an error") > } > and the help file example is > try(f()) > > Then > env _R_CHECK_LENGTH_1_CONDITION_=abort,verbose R-3.6.0 CMD check --as-cran > ppp_0.1.tar.gz > results in > * checking examples ... ERROR > Running examples in ‘ppp-Ex.R’ failed > The error most likely occurred in: > >> base::assign(".ptime", proc.time(), pos = "CheckExEnv") >> ### Name: f >> ### Title: Cause an error >> ### Aliases: f >> ### Keywords: error >> >> ### ** Examples >> >> try(f()) > ----------- FAILURE REPORT -------------- > --- failure: the condition has length > 1 --- > --- srcref --- > : > --- package (from environment) --- > ppp > --- call from context --- > f() > --- call from argument --- > if (x > 1) { > x <- -x > } > --- R stacktrace --- > where 1: f() > where 2: doTryCatch(return(expr), name, parentenv, handler) > where 3: tryCatchOne(expr, names, parentenv, handlers[[1L]]) > where 4: tryCatchList(expr, classes, parentenv, handlers) > where 5: tryCatch(expr, error = function(e) { > call <- conditionCall(e) > if (!is.null(call)) { > if (identical(call[[1L]], quote(doTryCatch))) > call <- sys.call(-4L) > dcall <- deparse(call)[1L] > prefix <- paste("Error in", dcall, ": ") > LONG <- 75L > sm <- strsplit(conditionMessage(e), "\n")[[1L]] > w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w") > if (is.na <http://is.na>(w)) > w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L], > type = "b") > if (w > LONG) > prefix <- paste0(prefix, "\n ") > } > else prefix <- "Error : " > msg <- paste0(prefix, conditionMessage(e), "\n") > .Internal(seterrmessage(msg[1L])) > if (!silent && isTRUE(getOption("show.error.messages"))) { > cat(msg, file = outFile) > .Internal(printDeferredWarnings()) > } > invisible(structure(msg, class = "try-error", condition = e)) > }) > where 6: try(f()) > > --- value of length: 3 type: logical --- > [1] FALSE TRUE TRUE > --- function from context --- > function (x = 1:3) > { > if (x > 1) { > x <- -x > } > stop("this function always gives an error") > } > <bytecode: 0x4f413d0> > <environment: namespace:ppp> > --- function search by body --- > Function f in namespace ppp has this body. > ----------- END OF FAILURE REPORT -------------- > Fatal error: the condition has length > 1 > * checking PDF version of manual ... OK > * DONE > > Status: 1 ERROR, 1 NOTE > See > ‘/tmp/bill/ppp.Rcheck/00check.log’ > for details. > Bill Dunlap > TIBCO Software > wdunlap tibco.com <http://tibco.com> > > > On Fri, Jun 7, 2019 at 10:21 AM Duncan Murdoch <murdoch.dun...@gmail.com > <mailto:murdoch.dun...@gmail.com>> wrote: > > On 07/06/2019 12:32 p.m., William Dunlap wrote: > > The length-condition-not-equal-to-one checks will cause R to shutdown > > even if the code in a tryCatch(). > > That's strange. I'm unable to reproduce it with my tries, and John's > package is no longer online. Do you have an example I could look at? > > Duncan Murdoch > > > > > Bill Dunlap > > TIBCO Software > > wdunlap tibco.com <http://tibco.com> <http://tibco.com> > > > > > > On Fri, Jun 7, 2019 at 7:47 AM Duncan Murdoch <murdoch.dun...@gmail.com > <mailto:murdoch.dun...@gmail.com> > > <mailto:murdoch.dun...@gmail.com <mailto:murdoch.dun...@gmail.com>>> > wrote: > > > > On 07/06/2019 9:46 a.m., J C Nash wrote: > > > Should try() not stop those checks from forcing an error? > > > > try(stop("msg")) will print the error message, but won't stop > > execution. Presumably the printed message is what is causing you > > problems. If you want to suppress that, use > > > > try(stop("msg"), silent = TRUE) > > > > Duncan Murdoch > > > > > > > > I recognize that this is the failure -- it is indeed the check > > I'm trying to > > > catch -- but I don't want tests of such checks to fail my > package. > > > > > > JN > > > > > > On 2019-06-07 9:31 a.m., Sebastian Meyer wrote: > > >> The failure stated in the R CMD check failure report is: > > >> > > >>> --- failure: length > 1 in coercion to logical --- > > >> > > >> This comes from --as-cran performing useful extra checks via > > setting the > > >> environment variable _R_CHECK_LENGTH_1_LOGIC2_, which means: > > >> > > >>> check if either argument of the binary operators && and || has > > length greater than one. > > >> > > >> (see > > https://cran.r-project.org/doc/manuals/r-release/R-ints.html#Tools) > > >> > > >> The failure report also states the source of the failure: > > >> > > >>> --- call from context --- > > >>> fchk(x, benbad, trace = 3, y) > > >>> --- call from argument --- > > >>> is.infinite(fval) || is.na <http://is.na> <http://is.na>(fval) > > >> > > >> The problem is that both is.infinite(fval) and is.na > <http://is.na> > > <http://is.na>(fval) return > > >> vectors of length 10 in your test case: > > >> > > >>> --- value of length: 10 type: logical --- > > >>> [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE > FALSE > > >> > > >> The || operator works on length 1 Booleans. Since fval can be of > > length > > >> greater than 1 at that point, the proper condition seems to be: > > >> > > >> any(is.infinite(fval)) || any(is.na <http://is.na> > <http://is.na>(fval)) > > >> > > >> Best regards, > > >> > > >> Sebastian > > >> > > >> > > >> Am 07.06.19 um 14:53 schrieb J C Nash: > > >>> Sorry reply not quicker. For some reason I'm not getting > > anything in the thread I started! > > >>> I found the responses in the archives. Perhaps cc: > > nas...@uottawa.ca <mailto:nas...@uottawa.ca> > <mailto:nas...@uottawa.ca <mailto:nas...@uottawa.ca>> please. > > >>> > > >>> I have prepared a tiny (2.8K) package at > > >>> http://web.ncf.ca/nashjc/jfiles/fchk_2019-6.5.tar.gz > > >>> > > >>> R CMD check --> OK > > >>> > > >>> R CMD check --as-cran --> 1 ERROR, 1 NOTE > > >>> > > >>> The error is in an example: > > >>> > > >>>> benbad<-function(x, y){ > > >>>> # y may be provided with different structures > > >>>> f<-(x-y)^2 > > >>>> } # very simple, but ... > > >>>> > > >>>> y<-1:10 > > >>>> x<-c(1) > > >>>> cat("test benbad() with y=1:10, x=c(1)\n") > > >>>> tryfc01 <- try(fc01<-fchk(x, benbad, trace=3, y)) > > >>>> print(tryfc01) > > >>>> print(fc01) > > >>> > > >>> There's quite a lot of output, but it doesn't make much sense > > to me, as > > >>> it refers to code that I didn't write. > > >>> > > >>> The function fchk is attempting to check if functions provided > for > > >>> optimization do not violate some conditions e.g., character > > rather than > > >>> numeric etc. > > >>> > > >>> JN > > >>> > > >>> > > >>> On 2019-06-07 8:44 a.m., J C Nash wrote: > > >>>> Uwe Ligges ||gge@ @end|ng |rom @t@t|@t|k@tu-dortmund@de > > >>>> Fri Jun 7 11:44:37 CEST 2019 > > >>>> > > >>>> Previous message (by thread): [R-pkg-devel] try() in R > > CMD check --as-cran > > >>>> Next message (by thread): [R-pkg-devel] using package > > data in package code > > >>>> Messages sorted by: [ date ] [ thread ] [ subject ] [ > > author ] > > >>>> > > >>>> Right, what problem are you talking about? Can you tell us > > which check > > >>>> it is and what it actually complained about. > > >>>> There is no check that looks at the sizes of x and y in > > exypressions > > >>>> such as > > >>>> (x - y)^2. > > >>>> as far as I know. > > >>>> > > >>>> Best, > > >>>> Uwe > > >>>> > > >>>> On 07.06.2019 10:33, Berry Boessenkool wrote: > > >>>>> > > >>>>> Not entirely sure if this is what you're looking for: > > >>>>> > > > https://github.com/wch/r-source/blob/trunk/src/library/tools/R/check.R > > >>>>> It does contain --as-cran a few times and there's the > > change-history: > > >>>>> > > > https://github.com/wch/r-source/commits/trunk/src/library/tools/R/check.R > > >>>>> > > >>>>> Regards, > > >>>>> Berry > > >>>>> > > >>>>> > > >>>>> ________________________________ > > >>>>> From: R-package-devel <r-package-devel-bounces using > > r-project.org <http://r-project.org> <http://r-project.org>> on > behalf of J C Nash > > <profjcnash using gmail.com <http://gmail.com> <http://gmail.com>> > > >>>>> Sent: Thursday, June 6, 2019 15:03 > > >>>>> To: List r-package-devel > > >>>>> Subject: [R-pkg-devel] try() in R CMD check --as-cran > > >>>>> > > >>>>> After making a small fix to my optimx package, I ran my usual > > R CMD check --as-cran. > > >>>>> > > >>>>> To my surprise, I got two ERRORs unrelated to the change. The > > errors popped up in > > >>>>> a routine designed to check the call to the user objective > > function. In particular, > > >>>>> one check is that the size of vectors is the same in > > expressions like (x - y)^2. > > >>>>> This works fine with R CMD check, but the --as-cran seems to > > have changed and it > > >>>>> pops an error, even when the call is inside try(). The irony > > that the routine in > > >>>>> question is intended to avoid problems like this is not lost > > on me. > > >>>>> > > >>>>> I'm working on a small reproducible example, but it's not > > small enough yet. > > >>>>> In the meantime, I'm looking for the source codes of the > > scripts for "R CMD check" and > > >>>>> "R CMD check --as-cran" so I can work out why there is this > > difference, which seems > > >>>>> to be recent. > > >>>>> > > >>>>> Can someone send/post a link? I plan to figure this out and > > provide feedback, > > >>>>> as I suspect it is going to affect others. However, it may be > > a few days or even > > >>>>> weeks if past experience is a guide. > > >>>>> > > >>>>> JN > > >>>>> > > >>>>> ______________________________________________ > > >>>>> R-package-devel using r-project.org <http://r-project.org> > <http://r-project.org> > > mailing list > > >>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel > > >>>>> > > >>>>> [[alternative HTML version deleted]] > > >>>>> > > >>>>> ______________________________________________ > > >>>>> R-package-devel using r-project.org <http://r-project.org> > <http://r-project.org> > > mailing list > > >>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel > > >>>>> > > >>>> > > >>> > > >>> ______________________________________________ > > >>> R-package-devel@r-project.org > <mailto:R-package-devel@r-project.org> > > <mailto:R-package-devel@r-project.org > <mailto:R-package-devel@r-project.org>> mailing list > > >>> https://stat.ethz.ch/mailman/listinfo/r-package-devel > > >>> > > >> > > >> ______________________________________________ > > >> R-package-devel@r-project.org > <mailto:R-package-devel@r-project.org> > > <mailto:R-package-devel@r-project.org > <mailto:R-package-devel@r-project.org>> mailing list > > >> https://stat.ethz.ch/mailman/listinfo/r-package-devel > > >> > > > > > > ______________________________________________ > > > R-package-devel@r-project.org > <mailto:R-package-devel@r-project.org> > > <mailto:R-package-devel@r-project.org > <mailto:R-package-devel@r-project.org>> mailing list > > > https://stat.ethz.ch/mailman/listinfo/r-package-devel > > > > > > > ______________________________________________ > > R-package-devel@r-project.org > <mailto:R-package-devel@r-project.org> <mailto:R-package-devel@r-project.org > <mailto:R-package-devel@r-project.org>> > > mailing list > > https://stat.ethz.ch/mailman/listinfo/r-package-devel > > > ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel