- using R Under development (unstable) (2026-02-04 r89376)
- using platform: x86_64-pc-linux-gnu
- R was compiled by
gcc (GCC) 15.1.1 20250521 (Red Hat 15.1.1-2)
GNU Fortran (GCC) 15.1.1 20250521 (Red Hat 15.1.1-2)
- running under: Fedora Linux 42 (Workstation Edition)
- using session charset: UTF-8
* current time: 2026-02-05 10:09:51 UTC
- using option ‘--no-stop-on-test-error’
- checking for file ‘robustX/DESCRIPTION’ ... OK
- checking extension type ... Package
- this is package ‘robustX’ version ‘1.2-7’
- package encoding: UTF-8
- checking package namespace information ... OK
- checking package dependencies ... OK
- checking if this is a source package ... OK
- checking if there is a namespace ... OK
- checking for executable files ... OK
- checking for hidden files and directories ... OK
- checking for portable file names ... OK
- checking for sufficient/correct file permissions ... OK
- checking whether package ‘robustX’ can be installed ... [6s/13s] OK
See the install log for details.
- checking package directory ... OK
- checking DESCRIPTION meta-information ... OK
- checking top-level files ... OK
- checking for left-over files ... OK
- checking index information ... OK
- checking package subdirectories ... OK
- checking code files for non-ASCII characters ... OK
- checking R files for syntax errors ... OK
- checking whether the package can be loaded ... OK
- checking whether the package can be loaded with stated dependencies ... OK
- checking whether the package can be unloaded cleanly ... OK
- checking whether the namespace can be loaded with stated dependencies ... OK
- checking whether the namespace can be unloaded cleanly ... OK
- checking loading without being on the library search path ... OK
- checking use of S3 registration ... OK
- checking dependencies in R code ... OK
- checking S3 generic/method consistency ... OK
- checking replacement functions ... OK
- checking foreign function calls ... OK
- checking R code for possible problems ... [11s/28s] OK
- checking Rd files ... OK
- checking Rd metadata ... OK
- checking Rd line widths ... OK
- checking Rd cross-references ... OK
- checking for missing documentation entries ... OK
- checking for code/documentation mismatches ... OK
- checking Rd \usage sections ... OK
- checking Rd contents ... OK
- checking for unstated dependencies in examples ... OK
- checking examples ... [11s/29s] OK
- checking for unstated dependencies in ‘tests’ ... OK
- checking tests ... [4s/10s] ERROR
Running ‘L1med-tst.R’
Running ‘cov-ex.R’
Running the tests in ‘tests/cov-ex.R’ failed.
Complete output:
> library(robustX)
> library(robustbase)
> (newRB <- (packageVersion("robustbase") >= "0.99"))
[1] TRUE
>
> sessionInfo()
R Under development (unstable) (2026-02-04 r89376)
Platform: x86_64-pc-linux-gnu
Running under: Fedora Linux 42 (Workstation Edition)
Matrix products: default
BLAS: /data/gannet/ripley/R/R-devel/lib/libRblas.so
LAPACK: /usr/lib64/liblapack.so.3.12.0 LAPACK version 3.12.0
locale:
[1] LC_CTYPE=en_GB.utf8 LC_NUMERIC=C
[3] LC_TIME=en_GB.UTF-8 LC_COLLATE=C
[5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
[7] LC_PAPER=en_GB.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
time zone: Europe/London
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] robustbase_0.99-7 robustX_1.2-7
loaded via a namespace (and not attached):
[1] DEoptimR_1.1-4 compiler_4.6.0
> packageDescription("robustX")
Package: robustX
Type: Package
Title: 'eXtra' / 'eXperimental' Functionality for Robust Statistics
Version: 1.2-7
Date: 2023-06-14
Authors@R: c(person("Martin","Maechler", role=c("aut","cre"),
email="maechler@stat.math.ethz.ch", comment = c(ORCID =
"0000-0002-8685-9910")) , person("Werner A.", "Stahel",
role="aut", email="stahel@stat.math.ethz.ch") , person("Rolf",
"Turner", role="ctb", email="r.turner@auckland.ac.nz", comment
= "reclas()") , person("Ueli", "Oetliker", role="ctb", comment
= "original version of BACON() and mvBACON for S+") ,
person("Tobias", "Schoch", role="ctb", comment =
"init.sel=\"V2\" for BACON; fix alpha") )
Maintainer: Martin Maechler <maechler@stat.math.ethz.ch>
Description: Robustness -- 'eXperimental', 'eXtraneous', or
'eXtraordinary' Functionality for Robust Statistics. Hence
methods which are not well established, often related to
methods in package 'robustbase'. Amazingly, 'BACON()',
originally by Billor, Hadi, and Velleman (2000)
<doi:10.1016/S0167-9473(99)00101-2> has become established in
places. The "barrow wheel" `rbwheel()` is from Stahel and
Mächler (2009) <doi:10.1111/j.1467-9868.2009.00706.x>.
Imports: grDevices, graphics, stats, utils, robustbase (>= 0.92-3)
Suggests: MASS, lattice, pcaPP
Enhances: ICS
License: GPL (>= 2)
Encoding: UTF-8
NeedsCompilation: no
Packaged: 2023-06-14 21:41:58 UTC; maechler
Author: Martin Maechler [aut, cre]
(<https://orcid.org/0000-0002-8685-9910>), Werner A. Stahel
[aut], Rolf Turner [ctb] (reclas()), Ueli Oetliker [ctb]
(original version of BACON() and mvBACON for S+), Tobias Schoch
[ctb] (init.sel="V2" for BACON; fix alpha)
Repository: CRAN
Date/Publication: 2023-06-16 07:30:02 UTC
Built: R 4.6.0; ; 2026-02-05 10:09:59 UTC; unix
-- File: /data/gannet/ripley/R/packages/tests-devel/robustX.Rcheck/robustX/Meta/package.rds
> (ourBLAS <- grepl(print(normalizePath(R.home())),
+ normalizePath(extSoftVersion()[["BLAS"]]), fixed = TRUE))
[1] "/data/gannet/ripley/R/R-devel"
[1] TRUE
> ## need extended precision (typically *includes* 64-bit):
> doCheck <- (.Machine$sizeof.longdouble >= 16)
> cat("doCheck (= have long double):", doCheck,"\n")
doCheck (= have long double): TRUE
>
> if(!dev.interactive(orNone=TRUE)) pdf("cov-ex.pdf")
>
> covNN.1 <- robustX:::covNNC1 ## the original definition (2003)
>
> data(iris)
> system.time(cN1 <- covNN.1(iris[-5]))
user system elapsed
0.363 0.111 1.149
> system.time(cN <- covNNC (iris[-5]))# faster indeed
user system elapsed
0.167 0.000 0.371
>
> ## report.and.stop.if.not.all.equal
> report.stopifnot.all.eq <- function(a,b, tol, ...) {
+ call <- sys.call()
+ ae <- all.equal(a,b, tol=tol, ...)
+ call[[1]] <- quote(all.equal)
+ if(!isTRUE(ae))
+ stop(sprintf("Not %s:\n%s\n\n", deparse(call),
+ paste(ae, collapse="\n")),
+ call.=FALSE)
+ ## else
+ TRUE
+ }
>
> UN <- function(L) lapply(L, unname)
>
> chk.NN.new.old <- function(cNew, cNold, tol = 2e-15, tol.1 = 20*tol) {
+ stopifnot(is.list(cNold$innc), length(n.i <- names(cNold$innc)) == 4)
+ cat("classification accordance matrix:\n")
+ print(table(new = cNew $classification,
+ old = cNold$classification))
+ report.stopifnot.all.eq(UN(cNew [1:4]),
+ UN(cNold[1:4]), tol=tol.1) &
+ report.stopifnot.all.eq(cNew $innc[n.i],
+ cNold$innc[n.i], tol=tol)
+ }
>
> summ.NN <- function(cNN, digits = 3) {
+ cbind(class = cNN$classification,
+ pprob = round(cNN$postprob, digits),
+ incc.p= round(cNN$innc$postprob, digits))
+ }
>
> s1 <- summ.NN(cN1)
> ss <- summ.NN(cN)
> if(isTRUE(all.equal(ss, s1))) ss else cbind(ss, s1)
class pprob incc.p class pprob incc.p
[1,] 1 1.000 1.000 1 1.000 1.000
[2,] 1 1.000 1.000 1 1.000 1.000
[3,] 1 1.000 1.000 1 1.000 1.000
[4,] 1 1.000 1.000 1 1.000 1.000
[5,] 1 1.000 1.000 1 1.000 1.000
[6,] 1 1.000 0.171 1 1.000 0.171
[7,] 1 1.000 1.000 1 1.000 1.000
[8,] 1 1.000 1.000 1 1.000 1.000
[9,] 1 1.000 1.000 1 1.000 1.000
[10,] 1 1.000 1.000 1 1.000 1.000
[11,] 1 1.000 1.000 1 1.000 1.000
[12,] 1 1.000 1.000 1 1.000 1.000
[13,] 1 1.000 1.000 1 1.000 1.000
[14,] 1 1.000 1.000 1 1.000 1.000
[15,] 1 1.000 0.000 1 0.998 0.000
[16,] 0 0.000 0.000 0 0.000 0.000
[17,] 1 1.000 0.718 1 1.000 0.718
[18,] 1 1.000 1.000 1 1.000 1.000
[19,] 1 1.000 0.002 1 1.000 0.002
[20,] 1 1.000 1.000 1 1.000 1.000
[21,] 1 1.000 1.000 1 1.000 1.000
[22,] 1 1.000 1.000 1 1.000 1.000
[23,] 1 1.000 1.000 1 1.000 1.000
[24,] 1 1.000 1.000 1 1.000 1.000
[25,] 1 1.000 1.000 1 1.000 1.000
[26,] 1 1.000 1.000 1 1.000 1.000
[27,] 1 1.000 1.000 1 1.000 1.000
[28,] 1 1.000 1.000 1 1.000 1.000
[29,] 1 1.000 1.000 1 1.000 1.000
[30,] 1 1.000 1.000 1 1.000 1.000
[31,] 1 1.000 1.000 1 1.000 1.000
[32,] 1 1.000 1.000 1 1.000 1.000
[33,] 1 1.000 0.000 1 1.000 0.000
[34,] 0 0.000 0.000 0 0.000 0.000
[35,] 1 1.000 1.000 1 1.000 1.000
[36,] 1 1.000 1.000 1 1.000 1.000
[37,] 1 1.000 1.000 1 1.000 1.000
[38,] 1 1.000 1.000 1 1.000 1.000
[39,] 1 1.000 1.000 1 1.000 1.000
[40,] 1 1.000 1.000 1 1.000 1.000
[41,] 1 1.000 1.000 1 1.000 1.000
[42,] 0 0.000 0.000 0 0.000 0.000
[43,] 1 1.000 1.000 1 1.000 1.000
[44,] 1 1.000 1.000 1 1.000 1.000
[45,] 1 1.000 1.000 1 1.000 1.000
[46,] 1 1.000 1.000 1 1.000 1.000
[47,] 1 1.000 1.000 1 1.000 1.000
[48,] 1 1.000 1.000 1 1.000 1.000
[49,] 1 1.000 1.000 1 1.000 1.000
[50,] 1 1.000 1.000 1 1.000 1.000
[51,] 1 1.000 0.058 1 1.000 0.058
[52,] 1 1.000 1.000 1 1.000 1.000
[53,] 1 1.000 1.000 1 1.000 1.000
[54,] 1 1.000 0.773 1 1.000 0.773
[55,] 1 1.000 1.000 1 1.000 1.000
[56,] 1 1.000 1.000 1 1.000 1.000
[57,] 1 1.000 0.999 1 1.000 0.999
[58,] 1 1.000 0.000 1 1.000 0.000
[59,] 1 1.000 1.000 1 1.000 1.000
[60,] 1 1.000 1.000 1 1.000 1.000
[61,] 0 0.000 0.000 0 0.000 0.000
[62,] 1 1.000 1.000 1 1.000 1.000
[63,] 1 0.611 0.000 0 0.000 0.000
[64,] 1 1.000 1.000 1 1.000 1.000
[65,] 1 1.000 1.000 1 1.000 1.000
[66,] 1 1.000 1.000 1 1.000 1.000
[67,] 1 1.000 1.000 1 1.000 1.000
[68,] 1 1.000 1.000 1 1.000 1.000
[69,] 1 0.786 0.000 0 0.000 0.000
[70,] 1 1.000 1.000 1 1.000 1.000
[71,] 1 1.000 1.000 1 1.000 1.000
[72,] 1 1.000 1.000 1 1.000 1.000
[73,] 1 1.000 1.000 1 1.000 1.000
[74,] 1 1.000 1.000 1 1.000 1.000
[75,] 1 1.000 1.000 1 1.000 1.000
[76,] 1 1.000 1.000 1 1.000 1.000
[77,] 1 1.000 1.000 1 1.000 1.000
[78,] 1 1.000 1.000 1 1.000 1.000
[79,] 1 1.000 1.000 1 1.000 1.000
[80,] 1 1.000 1.000 1 1.000 1.000
[81,] 1 1.000 1.000 1 1.000 1.000
[82,] 1 1.000 0.999 1 1.000 0.999
[83,] 1 1.000 1.000 1 1.000 1.000
[84,] 1 1.000 1.000 1 1.000 1.000
[85,] 1 1.000 1.000 1 1.000 1.000
[86,] 1 1.000 0.000 1 1.000 0.000
[87,] 1 1.000 1.000 1 1.000 1.000
[88,] 1 1.000 0.000 1 1.000 0.000
[89,] 1 1.000 1.000 1 1.000 1.000
[90,] 1 1.000 1.000 1 1.000 1.000
[91,] 1 1.000 1.000 1 1.000 1.000
[92,] 1 1.000 1.000 1 1.000 1.000
[93,] 1 1.000 1.000 1 1.000 1.000
[94,] 1 0.944 0.000 0 0.001 0.000
[95,] 1 1.000 1.000 1 1.000 1.000
[96,] 1 1.000 1.000 1 1.000 1.000
[97,] 1 1.000 1.000 1 1.000 1.000
[98,] 1 1.000 1.000 1 1.000 1.000
[99,] 1 1.000 0.000 1 1.000 0.000
[100,] 1 1.000 1.000 1 1.000 1.000
[101,] 1 1.000 0.000 1 1.000 0.000
[102,] 1 1.000 1.000 1 1.000 1.000
[103,] 1 1.000 1.000 1 1.000 1.000
[104,] 1 1.000 1.000 1 1.000 1.000
[105,] 1 1.000 1.000 1 1.000 1.000
[106,] 1 1.000 0.000 1 0.998 0.000
[107,] 1 1.000 0.000 0 0.317 0.000
[108,] 1 1.000 0.000 1 1.000 0.000
[109,] 1 1.000 0.000 1 0.999 0.000
[110,] 0 0.000 0.000 0 0.000 0.000
[111,] 1 1.000 1.000 1 1.000 1.000
[112,] 1 1.000 1.000 1 1.000 1.000
[113,] 1 1.000 1.000 1 1.000 1.000
[114,] 1 1.000 0.000 1 1.000 0.000
[115,] 1 1.000 0.899 1 1.000 0.899
[116,] 1 1.000 1.000 1 1.000 1.000
[117,] 1 1.000 1.000 1 1.000 1.000
[118,] 0 0.000 0.000 0 0.000 0.000
[119,] 0 0.000 0.000 0 0.000 0.000
[120,] 0 0.028 0.000 0 0.000 0.000
[121,] 1 1.000 1.000 1 1.000 1.000
[122,] 1 1.000 1.000 1 1.000 1.000
[123,] 0 0.000 0.000 0 0.000 0.000
[124,] 1 1.000 1.000 1 1.000 1.000
[125,] 1 1.000 1.000 1 1.000 1.000
[126,] 1 1.000 0.229 1 1.000 0.229
[127,] 1 1.000 1.000 1 1.000 1.000
[128,] 1 1.000 1.000 1 1.000 1.000
[129,] 1 1.000 1.000 1 1.000 1.000
[130,] 1 1.000 0.702 1 1.000 0.702
[131,] 1 1.000 0.000 0 0.357 0.000
[132,] 0 0.000 0.000 0 0.000 0.000
[133,] 1 1.000 1.000 1 1.000 1.000
[134,] 1 1.000 1.000 1 1.000 1.000
[135,] 1 1.000 0.818 1 1.000 0.818
[136,] 1 1.000 0.000 1 0.999 0.000
[137,] 1 1.000 0.000 1 1.000 0.000
[138,] 1 1.000 1.000 1 1.000 1.000
[139,] 1 1.000 1.000 1 1.000 1.000
[140,] 1 1.000 1.000 1 1.000 1.000
[141,] 1 1.000 1.000 1 1.000 1.000
[142,] 1 1.000 1.000 1 1.000 1.000
[143,] 1 1.000 1.000 1 1.000 1.000
[144,] 1 1.000 1.000 1 1.000 1.000
[145,] 1 1.000 1.000 1 1.000 1.000
[146,] 1 1.000 1.000 1 1.000 1.000
[147,] 1 1.000 0.991 1 1.000 0.991
[148,] 1 1.000 1.000 1 1.000 1.000
[149,] 1 1.000 0.000 1 1.000 0.000
[150,] 1 1.000 1.000 1 1.000 1.000
>
>
> try( # testing (tol=0 too small)
+ chk.NN.new.old(cN, cN1, tol=0)
+ )
classification accordance matrix:
old
new 0 1
0 10 0
1 5 135
Error : Not all.equal(UN(cNew[1:4]), UN(cNold[1:4]), tol = tol.1):
Component "cov": Mean relative difference: 0.01479474
Component "mu": Mean relative difference: 0.003191909
Component "postprob": Mean relative difference: 0.1351993
Component "classification": Mean relative difference: 1
> ## This used to fail when we use R's instead of BLAS matrix products:
> if(doCheck)
+ chk.NN.new.old(cN, cN1, tol = 4e-15) # seen 1.1e-15 work
classification accordance matrix:
old
new 0 1
0 10 0
1 5 135
Error: Not all.equal(UN(cNew[1:4]), UN(cNold[1:4]), tol = tol.1):
Component "cov": Mean relative difference: 0.01479474
Component "mu": Mean relative difference: 0.003191909
Component "postprob": Mean relative difference: 0.1351993
Component "classification": Mean relative difference: 1
Execution halted
- checking PDF version of manual ... [7s/20s] OK
- checking HTML version of manual ... [3s/10s] OK
- checking for non-standard things in the check directory ... OK
- checking for detritus in the temp directory ... OK
- DONE
Status: 1 ERROR