gabraham at csse.unimelb.edu.au
2008-May-18 09:15 UTC
[Rd] predict.prcomp: wrong check for matrix dimensions (PR#11482)
Full_Name: Gad Abraham Version: 2.7.0 OS: Ubuntu Linux Submission from: (NULL) (59.167.148.182) Description: ===========> x1 <- matrix(rnorm(100), 5, 20) > x2 <- matrix(rnorm(100), 5, 20) > p <- prcomp(x1) > predict(p, x2)Error in predict.prcomp(p, x2) : 'newdata' does not have the correct number of columns> dim(x2)[1] 5 20> dim(p$rotation)[1] 20 5 All predict.prcomp really does is x2 %*% p$rotation, which is a perfectly legal operation that should yield a 5x5 matrix:> dim(x2 %*% p$rotation)[1] 5 5 Solution: ======== Change p <- NCOL(object$rotation) to p <- NROW(object$rotation) This bug is still present in R-patched_2008-05-16.> sessionInfo()R version 2.7.0 (2008-04-22) x86_64-unknown-linux-gnu locale: LC_CTYPE=en_AU.UTF-8;LC_NUMERIC=C;LC_TIME=en_AU.UTF-8;LC_COLLATE=en_AU.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_AU.UTF-8;LC_PAPER=en_AU.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_AU.UTF-8;LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base