Nothing
library(cluster)
data(animals)
(mani <- mona(animals, trace=TRUE))
str(mani)
## version of the data withOUT missing:
animal.F <- mani$data
(maniF <- mona(animal.F, trace=TRUE))
data(plantTraits)
## Now construct 'plantT2' which has *all* binary variables
not2 <- vapply(plantTraits, function(var) !(is.factor(var) && nlevels(var) == 2), NA)
names(plantTraits)[not2]
plantT2 <- plantTraits
for(n in names(plantTraits)[not2]) {
v <- plantTraits[,n]
if(is.factor(v)) {
lv <- as.integer(levels(v))# ok for this data
v <- as.integer(v)
M <- median(lv)
} else M <- median(v, na.rm = TRUE)
stopifnot(is.finite(M))
plantT2[,n] <- (v <= M)
}
summary(plantT2)
(mon.pl2 <- mona(plantT2, trace = TRUE))
suppressWarnings(RNGversion("3.5.0")) # back compatibility of results
set.seed(1)
ani.N1 <- animals; ani.N1[cbind(sample.int(20, 10), sample.int(6, 10, replace=TRUE))] <- NA
(maniN <- mona(ani.N1, trace=TRUE))
for(seed in c(2:20)) {
set.seed(seed); cat("seed = ", seed,"\n")
ani.N2 <- animals
ani.N2[cbind(sample.int(20, 9),
sample.int( 6, 9, replace=TRUE))] <- NA
try(print(maniN2 <- mona(ani.N2, trace=TRUE)))
}
## Check all "too many NA" and other illegal cases
ani.NA <- animals; ani.NA[4,] <- NA
aniNA <- within(animals, { end[2:9] <- NA })
aniN2 <- animals; aniN2[cbind(1:6, c(3, 1, 4:6, 2))] <- NA
ani.non2 <- within(animals, end[7] <- 3 )
ani.idNA <- within(animals, end[!is.na(end)] <- 1 )
## use tools::assertError() {once you don't use *.Rout.save anymore}
try( mona(ani.NA) )
try( mona(aniNA) )
try( mona(aniN2) )
try( mona(ani.non2) )
try( mona(ani.idNA) )
if(require(MASS, lib.loc=.Library)) withAutoprint({
set.seed(253)
n <- 512; p <- 3
Sig <- diag(p); Sig[] <- 0.8 ^ abs(col(Sig) - row(Sig))
x3 <- mvrnorm(n, rep(0,p), Sig) >= 0
x <- cbind(x3, rbinom(n, size=1, prob = 1/2))
sapply(as.data.frame(x), table)
mx <- mona(x)
str(mx)
lapply(mx[c(1,3,4)], table)
mx # (too much, but still)
})
try(
mona(cbind(1:0), trace=2)
) -> et ## error: need p >= 2
stopifnot(inherits(et, "try-error"),
grepl("needs at least p >= 2", et))
## in the past, gave
## Loop npass = 1: (ka,kb) = (1,2)
## for(j ..) -> jma=1, jtel(.,z) = (17952088, 8) --> splitting: (nel; jres, ka, km) = (1; -17952086, 1, 17952089)
## inner loop: for(k in ka:km) use ner[k]: 1 2 2 2 2 2 2 2 2 2 ..... [infinite loop]
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.