Rev 72838 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
### Regression tests for which the printed output is the issue### May fail.### Skipped on a Unix-alike without Recommended packagespdf("reg-tests-3.pdf", encoding = "ISOLatin1.enc")## str() for character & factors with NA (levels), and for Surv objects:ff <- factor(c(2:1, NA), exclude = NULL)str(levels(ff))str(ff)str(ordered(ff, exclude=NULL))if(require(survival)) {(sa <- Surv(aml$time, aml$status))str(sa)detach("package:survival", unload = TRUE)}## were different, the last one failed in 1.6.2 (at least)## lm.influence where hat[1] == 1if(require(MASS)) {fit <- lm(formula = 1000/MPG.city ~ Weight + Cylinders + Type + EngineSize + DriveTrain, data = Cars93)print(lm.influence(fit))## row 57 should have hat = 1 and resid=0.summary(influence.measures(fit))}## only last two cols in row 57 should be influential## PR#6640 Zero weights in plot.lmif(require(MASS)) {fm1 <- lm(time~dist, data=hills, weights=c(0,0,rep(1,33)))plot(fm1)}## gave warnings in 1.8.1## PR#7829 model.tables & replicationsif(require(MASS)) {oats.aov <- aov(Y ~ B + V + N + V:N, data=oats[-1,])model.tables(oats.aov, "means", cterms=c("N", "V:N"))}## wrong printed output in 2.1.0## drop1 on weighted lm() fitsif(require(MASS)) {hills.lm <- lm(time ~ 0 + dist + climb, data=hills, weights=1/dist^2)print(drop1(hills.lm))print(stats:::drop1.default(hills.lm))hills.lm2 <- lm(time/dist ~ 1 + I(climb/dist), data=hills)drop1(hills.lm2)}## quoted unweighted RSS etc in 2.2.1## tests of ISO C99 compliance (Windows fails without a workaround)sprintf("%g", 123456789)sprintf("%8g", 123456789)sprintf("%9.7g", 123456789)sprintf("%10.9g", 123456789)sprintf("%g", 12345.6789)sprintf("%10.9g", 12345.6789)sprintf("%10.7g", 12345.6789)sprintf("%.7g", 12345.6789)sprintf("%.5g", 12345.6789)sprintf("%.4g", 12345.6789)sprintf("%9.4g", 12345.6789)sprintf("%10.4g", 12345.6789)## Windows used e+008 etc prior to 2.3.0## weighted glm() fitsif(require(MASS)) {hills.glm <- glm(time ~ 0 + dist + climb, data=hills, weights=1/dist^2)print(AIC(hills.glm))print(extractAIC(hills.glm))print(drop1(hills.glm))stats:::drop1.default(hills.glm)}## wrong AIC() and drop1 prior to 2.3.0.## calculating no of signif digitsprint(1.001, digits=16)## 2.4.1 gave 1.001000000000000## 2.5.0 errs on the side of caution.## as.matrix.data.frame with coercionif(require("survival")) {soa <- Surv(1:5, c(0, 0, 1, 0, 1))df.soa <- data.frame(soa)print(as.matrix(df.soa)) # numeric resultdf.soac <- data.frame(soa, letters[1:5])print(as.matrix(df.soac)) # character resultdetach("package:survival", unload = TRUE)}## failed in 2.8.1## wish of PR#13505npk.aov <- aov(yield ~ block + N * P + K, npk)foo <- proj(npk.aov)cbind(npk, foo)## failed in R < 2.10.0if(suppressMessages(require("Matrix"))) {print(cS. <- contr.SAS(5, sparse = TRUE))stopifnot(all(contr.SAS(5) == cS.),all(contr.helmert(5, sparse = TRUE) == contr.helmert(5)))x1 <- x2 <- c('a','b','a','b','c')x3 <- x2; x3[4:5] <- x2[5:4]print(xtabs(~ x1 + x2, sparse= TRUE, exclude = 'c'))print(xtabs(~ x1 + x3, sparse= TRUE, exclude = 'c'))detach("package:Matrix")## failed in R <= 2.13.1}## regression tests for dimnames (broken on 2009-07-31)contr.sum(4)contr.helmert(4)contr.sum(2) # needed drop=FALSE at one point.## xtabs did not exclude levels from factorsx1 <- c('a','b','a','b','c', NA)x2 <- factor(x1, exclude=NULL)print(xtabs(~ x1 + x2, na.action = na.pass))print(xtabs(~ x1 + x2, exclude = 'c', na.action = na.pass))## median should work by default for a suitable S4 class.## adapted from adaptsmoFMRIif(suppressMessages(require("Matrix"))) {x <- matrix(c(1,2,3,4))print(median(x))print(median(as(x, "dgeMatrix")))detach("package:Matrix")}## Various arguments were not duplicated: PR#15352 to 15354x <- 5y <- 2f <- function (y) xnumericDeriv(f(y),"y")xa<-list(1,2)b<-rep.int(a,c(2,2))b[[1]][1]<-9a[[1]]a <- numeric(1)x <- mget("a",as.environment(1))xa[1] <- 9x## needs MASS installed## PR#2586 labelling in alias()if(require("MASS")) {Y <- c(0,1,2)X1 <- c(0,1,0)X2 <- c(0,1,0)X3 <- c(0,0,1)print(res <- alias(lm(Y ~ X1 + X2 + X3)))stopifnot(identical(rownames(res[[2]]), "X2"))}## the error was in lm.(w)fitif(require("Matrix")) {m1 <- m2 <- m <- matrix(1:12, 3,4)dimnames(m2) <- list(LETTERS[1:3],letters[1:4])dimnames(m1) <- list(NULL,letters[1:4])M <- Matrix(m)M1 <- Matrix(m1)M2 <- Matrix(m2)## Now, with a new ideal cbind(), rbind():print(cbind(M, M1))stopifnot(identical(cbind (M, M1),cbind2(M, M1)))rm(M,M1,M2)detach("package:Matrix", unload=TRUE)}##{Matrix}## Invalid UTF-8 stringsx <- c("Jetz", "no", "chli", "z\xc3\xbcrit\xc3\xbc\xc3\xbctsch:","(noch", "ein", "bi\xc3\x9fchen", "Z\xc3\xbc", "deutsch)","\xfa\xb4\xbf\xbf\x9f")lapply(x, utf8ToInt)Encoding(x) <- "UTF-8"nchar(x, "b")try(nchar(x, "c"))try(nchar(x, "w"))nchar(x, "c", allowNA = TRUE)nchar(x, "w", allowNA = TRUE)## Results differed by platform, but some gave incorrect results on string 10.## str() on large strings (in multibyte locales; changing locale may not work everywhereoloc <- Sys.getlocale("LC_CTYPE")mbyte.lc <- {if(.Platform$OS.type == "windows")"English_United States.28605"else if(grepl("[.]UTF-8$", oloc, ignore.case=TRUE)) # typically nowadaysolocelse"en_US.UTF-8" # or rather "C.UTF-8" or from system("locale -a | fgrep .utf8")}identical(Sys.setlocale("LC_CTYPE", mbyte.lc), mbyte.lc) # "ok" if notcc <- "J\xf6reskog" # valid in "latin-1"; invalid multibyte string in UTF-8.tmp <- capture.output(str(cc) # failed in some R-devel versions)stopifnot(grepl("chr \"J.*reskog\"", .tmp))nchar(L <- strrep(paste(LETTERS, collapse="."), 100000), type="b")# 5.1 Mstopifnot(system.time( str(L) )[[1L]] < 0.10) # Sparc Solaris needed 0.052if(mbyte.lc != oloc) Sys.setlocale("LC_CTYPE", oloc)## needed 1.6 sec in (some) R <= 3.3.0 in a multibyte localeif(require("Matrix", .Library)) {M <- Matrix(diag(1:10), sparse=TRUE) # a "dsCMatrix"setClass("TestM", slots = c(M='numeric'))setMethod("+", c("TestM","TestM"), function(e1,e2) {e1@M + e2@M})M+M # works the first timeM+M # was error "object '.Generic' not found"##stopifnot(identical(pmin(2,M), pmin(2, as.matrix(M))),identical(as.matrix(pmax(M, 7)), pmax(as.matrix(M), 7)))rm(M)detach("package:Matrix", unload=TRUE)}##{Matrix}