1 2context("PCA") 3 4test_that("general data conversions", { 5 irisData <- as(iris[, 1:4], "dimRedData") 6 expect_equal(class(irisData)[1], "dimRedData") 7 8 irisParsCS <- list(center = TRUE, scale. = TRUE) 9 irisParsC <- list(center = TRUE, scale. = FALSE) 10 irisParsS <- list(center = FALSE, scale. = TRUE) 11 irisPars <- list(center = FALSE, scale. = FALSE) 12 13 irisResCS <- do.call(function(...) embed(irisData, "PCA", ...), irisParsCS) 14 irisResS <- do.call(function(...) embed(irisData, "PCA", ...), irisParsS) 15 irisResC <- do.call(function(...) embed(irisData, "PCA", ...), irisParsC) 16 irisRes <- do.call(function(...) embed(irisData, "PCA", ...), irisPars) 17 18 expect_equal(2, getNDim(irisResCS)) 19 expect_equal(2, getNDim(irisResS)) 20 expect_equal(2, getNDim(irisResC)) 21 expect_equal(2, getNDim(irisRes)) 22 23 expect_equal(class(irisResCS)[1], "dimRedResult") 24 expect_equal(class(irisResS)[1], "dimRedResult") 25 expect_equal(class(irisResC)[1], "dimRedResult") 26 expect_equal(class(irisRes)[1], "dimRedResult") 27 28 expect_equal(irisResCS@apply(irisData), irisResCS@data) 29 expect_equal(irisResS@apply(irisData), irisResS@data) 30 expect_equal(irisResC@apply(irisData), irisResC@data) 31 expect_equal(irisRes@apply(irisData), irisRes@data) 32 33 expect(sqrt(mean( 34 (irisResCS@inverse(irisResCS@data)@data - irisData@data) ^ 2 35 )) < 0.3, 36 "error too large" 37 ) 38 expect(sqrt(mean( 39 (irisResS@inverse(irisResS@data)@data - irisData@data) ^ 2 40 )) < 0.3, 41 "error too large" 42 ) 43 expect(sqrt(mean( 44 (irisResC@inverse(irisResC@data)@data - irisData@data) ^ 2 45 )) < 0.3, 46 "error too large" 47 ) 48 expect(sqrt(mean( 49 (irisRes@inverse(irisRes@data)@data - irisData@data) ^ 2 50 )) < 0.3, 51 "error too large" 52 ) 53 54 scale2 <- function(x, center, scale.) scale(x, center, scale.) 55 expect_equal( 56 do.call(function(...) scale2(iris[1:4], ...) %*% getRotationMatrix(irisResCS), irisParsCS), 57 getData( getDimRedData(irisResCS) ) 58 ) 59 expect_equal( 60 do.call(function(...) scale2(iris[1:4], ...) %*% getRotationMatrix(irisResS), irisParsS), 61 getData( getDimRedData(irisResS) ) 62 ) 63 expect_equal( 64 do.call(function(...) scale2(iris[1:4], ...) %*% getRotationMatrix(irisResC), irisParsC), 65 getData( getDimRedData(irisResC) ) 66 ) 67 expect_equal( 68 do.call(function(...) scale2(iris[1:4], ...) %*% getRotationMatrix(irisRes), irisPars), 69 getData( getDimRedData(irisRes) ) 70 ) 71}) 72