[R-pkg-devel] Help on Windows CRAN Check
Tomas Kalibera
tom@@@k@||ber@ @end|ng |rom gm@||@com
Thu Mar 5 09:04:40 CET 2020
On 3/5/20 4:26 AM, John Lawson wrote:
> I see this error on the CRAN Check report
>
>> ### ** Examples
>>
>> #Definitive Screening Design
>> library(daewr)
>> set.seed(1234)
>> x <- DefScreen(m=5,c=0)
>> colnames(x) <- paste("x",1:5,sep="")
>> x$y <- 3*x$x1 + 2*x$x2 + 2*x$x4*x$x5 + x$x3^2 + 2*x$x1^2 + rnorm(nrow(x),0,1)
>> (z <- HierAFS(x$y,x[,-6],m=5,c=0,step=4,nm1=FALSE ))
> ----------- FAILURE REPORT --------------
> --- failure: the condition has length > 1 ---
> --- srcref ---
> :
> --- package (from environment) ---
> daewr
> --- call from context ---
> ihstep(y, x, m, c)
> --- call from argument ---
> if (t1 == "I" & t2 == "(") {
> iquad = TRUE
> }
> --- R stacktrace ---
> where 1: ihstep(y, x, m, c)
> where 2: eval(expr, pf)
> where 3: eval(expr, pf)
> where 4: withVisible(eval(expr, pf))
> where 5: evalVis(expr)
> where 6: capture.output(res <- ihstep(y, x, m, c))
> where 7: withCallingHandlers(expr, warning = function(w)
> invokeRestart("muffleWarning"))
> where 8: suppressWarnings(invisible(capture.output(res <- ihstep(y, x,
> m, c))))
> where 9: HierAFS(x$y, x[, -6], m = 5, c = 0, step = 4, nm1 = FALSE)
>
> --- value of length: 3 type: logical ---
> [1] FALSE FALSE FALSE
> --- function from context ---
> function (y, des, m, c)
> {
> lin <- colnames(des)
> values <- c("A", "B", "C", "D", "E", "F", "G", "H", "I",
> "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
> "U", "V", "W", "X", "Y", "Z")
> repl <- c("I(A^2)", "I(B^2)", "I(C^2)", "I(D^2)", "I(E^2)",
> "I(F^2)", "I(G^2)", "I(H^2)", "I(I^2)", "I(J^2)", "I(K^2)",
> "I(L^2)", "I(M^2)", "I(N^2)", "I(O^2)", "I(P^2)", "I(Q^2)",
> "I(R^2)", "I(S^2)", "I(T^2)", "I(U^2)", "I(V^2)", "I(W^2)",
> "I(X^2)", "I(Y^2)", "I(Z^2)")
> repl.tab <- cbind(values, repl)
> if (m == 0) {
> quad <- character()
> }
> else {
> indx <- rep(0, m)
> for (i in 1:m) {
> indx[i] <- match(lin[i], repl.tab[, 1], nomatch = 0)
> }
> quad <- rep("A", m)
> for (i in 1:m) {
> quad[i] <- lin[i]
> }
> quad[indx != 0] <- repl.tab[indx, 2]
> quad <- paste(quad, collapse = "+")
> }
> dat <- data.frame(y = y, des)
> lm1 <- lm(y ~ (.)^2, data = dat)
> mm <- model.matrix(lm1)
> fact <- colnames(mm)
> fact <- fact[-1]
> fact <- paste(fact, collapse = "+")
> mod <- paste(c(fact, quad), collapse = "+")
> lm2 <- lm(reformulate(termlabels = mod, response = "y"),
> data = dat)
> mm <- model.matrix(lm2)
> mm <- mm[, 2:ncol(mm)]
> trm <- firstm(y, mm)
> d1 <- data.frame(y = y, mm[, trm])
> t1 <- substr(trm, 1, 1)
> t2 <- substr(trm, 2, 2)
> t3 <- substr(trm, 3, 3)
> iquad = FALSE
> if (t1 == "I" & t2 == "(") {
> iquad = TRUE
> }
> hmt <- trm
> if (t2 == "") {
> nms <- names(d1)
> nms[2] <- hmt
> names(d1) <- nms
> }
> m1 <- lm(y ~ (.), data = d1)
> result <- summary(m1)
> print(result)
> return(trm)
> }
> <bytecode: 0x088fe000>
> <environment: namespace:daewr>
> --- function search by body ---
> Function ihstep in namespace daewr has this body.
> ----------- END OF FAILURE REPORT --------------
> Fatal error: the condition has length > 1
The problem is that the condition t1 == "I" & t2 == "(" of the if
statement in the code is not a scalar. Even though this has been allowed
in R historically, the first element has been used, it is almost always
a sign of coding error, so it is going to become a runtime error.
So what one should do is fix the code to only use scalar conditions -
ensure t1, t2 are scalar, replace & by &&.
You can enable these checks on your end using an environment variable
(more details are in R Internals, _R_CHECK_LENGTH_1_CONDITION_ and
related is _R_CHECK_LENGTH_1_LOGIC2_).|||
|
Best
Tomas
>
>
> However on my own computer or on Rforge
>
> I see this:
>
> * checking examples ... OK
> * DONE
>
> Status: OK
>
> -- R CMD check results ---------------------------------------- daewr 1.1-9 ----
> Duration: 1m 1.8s
>
> 0 errors v | 0 warnings v | 0 notes v
>
> R CMD check succeeded
>
>
> I am not sure what the error is or how to correct it. Any help would
> be greatly appreciated,
>
> John Lawson
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
[[alternative HTML version deleted]]
More information about the R-package-devel
mailing list