A simplified version without a package: Sys.setenv("_R_CHECK_LENGTH_1_LOGIC2_"="abort,verbose") tryCatch(1:3 || 1, error = identity)
Running this aborts the session since it calls R_Suicide without first signaling a condition to try any available handlers. Should be easy to change, but I don't know if there are any downsides for the CRAN workflow. I'll look into it. Best, luke On Fri, 7 Jun 2019, 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(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 > > > On Fri, Jun 7, 2019 at 10:21 AM Duncan Murdoch <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> >>> >>> >>> On Fri, Jun 7, 2019 at 7:47 AM Duncan Murdoch <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>(fval) >>> >> >>> >> The problem is that both is.infinite(fval) and 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>(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> 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>> on behalf of J C Nash >>> <profjcnash using 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> >>> 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> >>> mailing list >>> >>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel >>> >>>>> >>> >>>> >>> >>> >>> >>> ______________________________________________ >>> >>> 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> mailing list >>> >> https://stat.ethz.ch/mailman/listinfo/r-package-devel >>> >> >>> > >>> > ______________________________________________ >>> > 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> >>> mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-package-devel >>> >> >> > -- Luke Tierney Ralph E. Wareham Professor of Mathematical Sciences University of Iowa Phone: 319-335-3386 Department of Statistics and Fax: 319-335-3017 Actuarial Science 241 Schaeffer Hall email: luke-tier...@uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel