stopifnot(identical(fullRank(wood), wood))
## More sophisticated and delicate
dim(T <- tcrossprod(data.matrix(toxicity))) # 38 x 38
dim(T. <- fullRank(T)) # 38 x 10
if(requireNamespace("Matrix")) {
rMmeths <- eval(formals(Matrix::rankMatrix)$method)
rT. <- sapply(rMmeths, function(.m.) Matrix::rankMatrix(T., method = .m.))
print(rT.) # "qr" (= "qrLinpack"): 13, others rather 10
}
dim(T.2 <- fullRank(T, tol = 1e-15))# 38 x 18
dim(T.3 <- fullRank(T, tol = 1e-12))# 38 x 13
dim(T.3 <- fullRank(T, tol = 1e-10))# 38 x 13
dim(T.3 <- fullRank(T, tol = 1e-8 ))# 38 x 12
dim(T.) # default from above 38 x 10
dim(T.3 <- fullRank(T, tol = 1e-5 ))# 38 x 10 -- still
plot(svd(T, 0,0)$d, log="y", main = "singular values of T", yaxt="n")
axis(2, at=10^(-14:5), las=1)
## pretty clearly indicates that rank 10 is "correct" here.
Run the code above in your browser using DataLab