CRAN Package Check Results for Package rotations

Last updated on 2020-02-19 10:49:08 CET.

Flavor Version Tinstall Tcheck Ttotal Status Flags
r-devel-linux-x86_64-debian-clang 1.5 118.18 76.70 194.88 ERROR
r-devel-linux-x86_64-debian-gcc 1.5 84.63 59.60 144.23 ERROR
r-devel-linux-x86_64-fedora-clang 1.5 262.60 ERROR
r-devel-linux-x86_64-fedora-gcc 1.5 251.59 ERROR
r-devel-windows-ix86+x86_64 1.5 218.00 180.00 398.00 NOTE
r-devel-windows-ix86+x86_64-gcc8 1.5 323.00 191.00 514.00 NOTE
r-patched-linux-x86_64 1.5 94.17 85.71 179.88 OK
r-patched-solaris-x86 1.5 288.20 OK
r-release-linux-x86_64 1.5 97.50 87.97 185.47 OK
r-release-windows-ix86+x86_64 1.5 237.00 168.00 405.00 NOTE
r-release-osx-x86_64 1.5 WARN
r-oldrel-windows-ix86+x86_64 1.5 187.00 152.00 339.00 NOTE
r-oldrel-osx-x86_64 1.5 NOTE

Check Details

Version: 1.5
Check: examples
Result: ERROR
    Running examples in 'rotations-Ex.R' failed
    The error most likely occurred in:
    
    > base::assign(".ptime", proc.time(), pos = "CheckExEnv")
    > ### Name: Arithmetic
    > ### Title: Arithmetic operators on SO(3)
    > ### Aliases: "+.Q4" "+.SO3" "-.Q4" "-.SO3" +.Q4 +.SO3 -.Q4 -.SO3 Arithmetic
    >
    > ### ** Examples
    >
    > U <- c(1, 0, 0) #Rotate about the x-axis
    > R1 <- as.SO3(U, pi/8) #Rotate pi/8 radians about the x-axis
    > R2 <- R1 + R1 #Rotate pi/8 radians about the x-axis twice
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
    :
     --- package (from environment) ---
    rotations
     --- call from context ---
    is.SO3(Rs)
     --- call from argument ---
    if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
    where 1: is.SO3(Rs)
    where 2: formatSO3(x)
    where 3: center.SO3(x, y)
    where 4: center(x, y)
    where 5: `+.SO3`(R1, R1)
    
     --- value of length: 2 type: logical ---
    [1] FALSE FALSE
     --- function from context ---
    function (x)
    {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
    }
    <bytecode: 0x518e800>
    <environment: namespace:rotations>
     --- function search by body ---
    Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
    Error in if (class(x) == "data.frame") R <- data.matrix(R) :
     the condition has length > 1
    Calls: +.SO3 -> center -> center.SO3 -> formatSO3 -> is.SO3
    Execution halted
Flavor: r-devel-linux-x86_64-debian-clang

Version: 1.5
Check: tests
Result: ERROR
     Running 'test-all.R' [6s/6s]
    Running the tests in 'tests/test-all.R' failed.
    Complete output:
     > library(testthat)
     > test_check("rotations")
     Loading required package: rotations
     Loading required package: ggplot2
     Loading required package: Rcpp
     Loading required package: rgl
    
     Attaching package: 'rotations'
    
     The following object is masked from 'package:stats':
    
     median
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_arithmetic.R#3: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x40cc358>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     -- 1. Error: (unknown) (@test_arithmetic.R#3) ---------------------------------
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(x)
     where 3: mis.angle.SO3(R)
     where 4: mis.angle(R)
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_basics.R#11: expect_equal(mis.angle(R), abs(r))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x40cc358>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     -- 2. Error: (unknown) (@test_basics.R#11) ------------------------------------
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(mis.angle(R), abs(r))
     5. rotations:::mis.angle.SO3(R)
     6. rotations:::formatSO3(x)
     7. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(as.SO3(u, r))
     where 4: as.Q4(as.SO3(u, r))
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_conversions.R#7: expect_equal(as.Q4(as.SO3(u, r)), as.Q4(u, r))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x40cc358>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     -- 3. Error: (unknown) (@test_conversions.R#7) --------------------------------
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(as.Q4(as.SO3(u, r)), as.Q4(u, r))
     5. rotations:::as.Q4.SO3(as.SO3(u, r))
     6. rotations:::formatSO3(R)
     7. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_discord.R#2: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x40cc358>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     -- 4. Error: (unknown) (@test_discord.R#2) ------------------------------------
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_estimators.R#3: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x40cc358>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     -- 5. Error: (unknown) (@test_estimators.R#3) ---------------------------------
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(x)
     where 3: rot.dist.SO3(Rs, method = "intrinsic")
     where 4: rot.dist(Rs, method = "intrinsic")
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_metrics.R#5: expect_equal(rot.dist(Rs, method = "intrinsic"), abs(rs))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x40cc358>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     -- 6. Error: (unknown) (@test_metrics.R#5) ------------------------------------
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(rot.dist(Rs, method = "intrinsic"), abs(rs))
     5. rotations:::rot.dist.SO3(Rs, method = "intrinsic")
     6. rotations:::formatSO3(x)
     7. rotations::is.SO3(Rs)
    
     == testthat results ===========================================================
     [ OK: 0 | SKIPPED: 0 | WARNINGS: 0 | FAILED: 6 ]
     1. Error: (unknown) (@test_arithmetic.R#3)
     2. Error: (unknown) (@test_basics.R#11)
     3. Error: (unknown) (@test_conversions.R#7)
     4. Error: (unknown) (@test_discord.R#2)
     5. Error: (unknown) (@test_estimators.R#3)
     6. Error: (unknown) (@test_metrics.R#5)
    
     Error: testthat unit tests failed
     Execution halted
Flavor: r-devel-linux-x86_64-debian-clang

Version: 1.5
Check: re-building of vignette outputs
Result: WARN
    Error(s) in re-building vignettes:
     ...
    --- re-building 'rotations-intro.Rnw' using knitr
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
    :
     --- package (from environment) ---
    rotations
     --- call from context ---
    is.SO3(Rs)
     --- call from argument ---
    if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
    where 1: is.SO3(Rs)
    where 2: formatSO3(x)
    where 3: mis.angle.SO3(R)
    where 4: mis.angle(R)
    where 5: eval(expr, envir, enclos)
    where 6: eval(expr, envir, enclos)
    where 7: withVisible(eval(expr, envir, enclos))
    where 8: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,
     error = eHandler, message = mHandler)
    where 9: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,
     enclos)), warning = wHandler, error = eHandler, message = mHandler))
    where 10: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,
     envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)))
    where 11: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,
     debug = debug, last = i == length(out), use_try = stop_on_error !=
     2L, keep_warning = keep_warning, keep_message = keep_message,
     output_handler = output_handler, include_timing = include_timing)
    where 12: evaluate::evaluate(...)
    where 13: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning),
     keep_message = !isFALSE(options$message), stop_on_error = if (options$error &&
     options$include) 0L else 2L, output_handler = knit_handlers(options$render,
     options))
    where 14: in_dir(input_dir(), evaluate(code, envir = env, new_device = FALSE,
     keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message),
     stop_on_error = if (options$error && options$include) 0L else 2L,
     output_handler = knit_handlers(options$render, options)))
    where 15: block_exec(params)
    where 16: call_block(x)
    where 17: process_group.block(group)
    where 18: process_group(group)
    where 19: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),
     error = function(e) {
     setwd(wd)
     cat(res, sep = "\n", file = output %n% "")
     message("Quitting from lines ", paste(current_lines(i),
     collapse = "-"), " (", knit_concord$get("infile"),
     ") ")
     })
    where 20: process_file(text, output)
    where 21: (if (grepl("\\.[Rr]md$", file)) knit2html_v1 else if (grepl("\\.[Rr]rst$",
     file)) knit2pandoc else knit)(file, encoding = encoding,
     quiet = quiet, envir = globalenv(), ...)
    where 22: engine$weave(file, quiet = quiet, encoding = enc)
    where 23: doTryCatch(return(expr), name, parentenv, handler)
    where 24: tryCatchOne(expr, names, parentenv, handlers[[1L]])
    where 25: tryCatchList(expr, classes, parentenv, handlers)
    where 26: tryCatch({
     engine$weave(file, quiet = quiet, encoding = enc)
     setwd(startdir)
     output <- find_vignette_product(name, by = "weave", engine = engine)
     if (!have.makefile && vignette_is_tex(output)) {
     texi2pdf(file = output, clean = FALSE, quiet = quiet)
     output <- find_vignette_product(name, by = "texi2pdf",
     engine = engine)
     }
     outputs <- c(outputs, output)
    }, error = function(e) {
     thisOK <<- FALSE
     fails <<- c(fails, file)
     message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",
     file, conditionMessage(e)))
    })
    where 27: tools:::buildVignettes(dir = "/home/hornik/tmp/R.check/r-devel-clang/Work/PKGS/rotations.Rcheck/vign_test/rotations",
     ser_elibs = "/tmp/Rtmp2NTPTA/file34e5895c319.rds")
    
     --- value of length: 2 type: logical ---
    [1] FALSE FALSE
     --- function from context ---
    function (x)
    {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
    }
    <bytecode: 0x6146a80>
    <environment: namespace:rotations>
     --- function search by body ---
    Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
    Quitting from lines 121-123 (rotations-intro.Rnw)
    Error: processing vignette 'rotations-intro.Rnw' failed with diagnostics:
    the condition has length > 1
    --- failed re-building 'rotations-intro.Rnw'
    
    SUMMARY: processing the following file failed:
     'rotations-intro.Rnw'
    
    Error: Vignette re-building failed.
    Execution halted
Flavor: r-devel-linux-x86_64-debian-clang

Version: 1.5
Check: examples
Result: ERROR
    Running examples in ‘rotations-Ex.R’ failed
    The error most likely occurred in:
    
    > base::assign(".ptime", proc.time(), pos = "CheckExEnv")
    > ### Name: Arithmetic
    > ### Title: Arithmetic operators on SO(3)
    > ### Aliases: "+.Q4" "+.SO3" "-.Q4" "-.SO3" +.Q4 +.SO3 -.Q4 -.SO3 Arithmetic
    >
    > ### ** Examples
    >
    > U <- c(1, 0, 0) #Rotate about the x-axis
    > R1 <- as.SO3(U, pi/8) #Rotate pi/8 radians about the x-axis
    > R2 <- R1 + R1 #Rotate pi/8 radians about the x-axis twice
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
    :
     --- package (from environment) ---
    rotations
     --- call from context ---
    is.SO3(Rs)
     --- call from argument ---
    if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
    where 1: is.SO3(Rs)
    where 2: formatSO3(x)
    where 3: center.SO3(x, y)
    where 4: center(x, y)
    where 5: `+.SO3`(R1, R1)
    
     --- value of length: 2 type: logical ---
    [1] FALSE FALSE
     --- function from context ---
    function (x)
    {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
    }
    <bytecode: 0x55af9f232500>
    <environment: namespace:rotations>
     --- function search by body ---
    Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
    Error in if (class(x) == "data.frame") R <- data.matrix(R) :
     the condition has length > 1
    Calls: +.SO3 -> center -> center.SO3 -> formatSO3 -> is.SO3
    Execution halted
Flavor: r-devel-linux-x86_64-debian-gcc

Version: 1.5
Check: tests
Result: ERROR
     Running ‘test-all.R’ [4s/7s]
    Running the tests in ‘tests/test-all.R’ failed.
    Complete output:
     > library(testthat)
     > test_check("rotations")
     Loading required package: rotations
     Loading required package: ggplot2
     Loading required package: Rcpp
     Loading required package: rgl
    
     Attaching package: 'rotations'
    
     The following object is masked from 'package:stats':
    
     median
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_arithmetic.R#3: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x56506eb06360>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 1. Error: (unknown) (@test_arithmetic.R#3) ─────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(x)
     where 3: mis.angle.SO3(R)
     where 4: mis.angle(R)
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_basics.R#11: expect_equal(mis.angle(R), abs(r))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x56506eb06360>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 2. Error: (unknown) (@test_basics.R#11) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(mis.angle(R), abs(r))
     5. rotations:::mis.angle.SO3(R)
     6. rotations:::formatSO3(x)
     7. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(as.SO3(u, r))
     where 4: as.Q4(as.SO3(u, r))
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_conversions.R#7: expect_equal(as.Q4(as.SO3(u, r)), as.Q4(u, r))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x56506eb06360>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 3. Error: (unknown) (@test_conversions.R#7) ────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(as.Q4(as.SO3(u, r)), as.Q4(u, r))
     5. rotations:::as.Q4.SO3(as.SO3(u, r))
     6. rotations:::formatSO3(R)
     7. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_discord.R#2: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x56506eb06360>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 4. Error: (unknown) (@test_discord.R#2) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_estimators.R#3: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x56506eb06360>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 5. Error: (unknown) (@test_estimators.R#3) ─────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(x)
     where 3: rot.dist.SO3(Rs, method = "intrinsic")
     where 4: rot.dist(Rs, method = "intrinsic")
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_metrics.R#5: expect_equal(rot.dist(Rs, method = "intrinsic"), abs(rs))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x56506eb06360>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 6. Error: (unknown) (@test_metrics.R#5) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(rot.dist(Rs, method = "intrinsic"), abs(rs))
     5. rotations:::rot.dist.SO3(Rs, method = "intrinsic")
     6. rotations:::formatSO3(x)
     7. rotations::is.SO3(Rs)
    
     ══ testthat results ═══════════════════════════════════════════════════════════
     [ OK: 0 | SKIPPED: 0 | WARNINGS: 0 | FAILED: 6 ]
     1. Error: (unknown) (@test_arithmetic.R#3)
     2. Error: (unknown) (@test_basics.R#11)
     3. Error: (unknown) (@test_conversions.R#7)
     4. Error: (unknown) (@test_discord.R#2)
     5. Error: (unknown) (@test_estimators.R#3)
     6. Error: (unknown) (@test_metrics.R#5)
    
     Error: testthat unit tests failed
     Execution halted
Flavor: r-devel-linux-x86_64-debian-gcc

Version: 1.5
Check: re-building of vignette outputs
Result: WARN
    Error(s) in re-building vignettes:
     ...
    --- re-building ‘rotations-intro.Rnw’ using knitr
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
    :
     --- package (from environment) ---
    rotations
     --- call from context ---
    is.SO3(Rs)
     --- call from argument ---
    if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
    where 1: is.SO3(Rs)
    where 2: formatSO3(x)
    where 3: mis.angle.SO3(R)
    where 4: mis.angle(R)
    where 5: eval(expr, envir, enclos)
    where 6: eval(expr, envir, enclos)
    where 7: withVisible(eval(expr, envir, enclos))
    where 8: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,
     error = eHandler, message = mHandler)
    where 9: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,
     enclos)), warning = wHandler, error = eHandler, message = mHandler))
    where 10: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,
     envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)))
    where 11: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,
     debug = debug, last = i == length(out), use_try = stop_on_error !=
     2L, keep_warning = keep_warning, keep_message = keep_message,
     output_handler = output_handler, include_timing = include_timing)
    where 12: evaluate::evaluate(...)
    where 13: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning),
     keep_message = !isFALSE(options$message), stop_on_error = if (options$error &&
     options$include) 0L else 2L, output_handler = knit_handlers(options$render,
     options))
    where 14: in_dir(input_dir(), evaluate(code, envir = env, new_device = FALSE,
     keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message),
     stop_on_error = if (options$error && options$include) 0L else 2L,
     output_handler = knit_handlers(options$render, options)))
    where 15: block_exec(params)
    where 16: call_block(x)
    where 17: process_group.block(group)
    where 18: process_group(group)
    where 19: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),
     error = function(e) {
     setwd(wd)
     cat(res, sep = "\n", file = output %n% "")
     message("Quitting from lines ", paste(current_lines(i),
     collapse = "-"), " (", knit_concord$get("infile"),
     ") ")
     })
    where 20: process_file(text, output)
    where 21: (if (grepl("\\.[Rr]md$", file)) knit2html_v1 else if (grepl("\\.[Rr]rst$",
     file)) knit2pandoc else knit)(file, encoding = encoding,
     quiet = quiet, envir = globalenv(), ...)
    where 22: engine$weave(file, quiet = quiet, encoding = enc)
    where 23: doTryCatch(return(expr), name, parentenv, handler)
    where 24: tryCatchOne(expr, names, parentenv, handlers[[1L]])
    where 25: tryCatchList(expr, classes, parentenv, handlers)
    where 26: tryCatch({
     engine$weave(file, quiet = quiet, encoding = enc)
     setwd(startdir)
     output <- find_vignette_product(name, by = "weave", engine = engine)
     if (!have.makefile && vignette_is_tex(output)) {
     texi2pdf(file = output, clean = FALSE, quiet = quiet)
     output <- find_vignette_product(name, by = "texi2pdf",
     engine = engine)
     }
     outputs <- c(outputs, output)
    }, error = function(e) {
     thisOK <<- FALSE
     fails <<- c(fails, file)
     message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",
     file, conditionMessage(e)))
    })
    where 27: tools:::buildVignettes(dir = "/home/hornik/tmp/R.check/r-devel-gcc/Work/PKGS/rotations.Rcheck/vign_test/rotations",
     ser_elibs = "/home/hornik/tmp/scratch/RtmpHSb2LX/file47204c09491d.rds")
    
     --- value of length: 2 type: logical ---
    [1] FALSE FALSE
     --- function from context ---
    function (x)
    {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
    }
    <bytecode: 0x55bc3af4ac88>
    <environment: namespace:rotations>
     --- function search by body ---
    Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
    Quitting from lines 121-123 (rotations-intro.Rnw)
    Error: processing vignette 'rotations-intro.Rnw' failed with diagnostics:
    the condition has length > 1
    --- failed re-building ‘rotations-intro.Rnw’
    
    SUMMARY: processing the following file failed:
     ‘rotations-intro.Rnw’
    
    Error: Vignette re-building failed.
    Execution halted
Flavor: r-devel-linux-x86_64-debian-gcc

Version: 1.5
Check: installed package size
Result: NOTE
     installed size is 10.1Mb
     sub-directories of 1Mb or more:
     R 1.1Mb
     data 2.3Mb
     libs 6.1Mb
Flavors: r-devel-linux-x86_64-fedora-clang, r-devel-windows-ix86+x86_64, r-devel-windows-ix86+x86_64-gcc8, r-release-windows-ix86+x86_64, r-release-osx-x86_64, r-oldrel-windows-ix86+x86_64, r-oldrel-osx-x86_64

Version: 1.5
Check: compiled code
Result: NOTE
    File ‘rotations/libs/rotations.so’:
     Found no calls to: ‘R_registerRoutines’, ‘R_useDynamicSymbols’
    
    It is good practice to register native routines and to disable symbol
    search.
    
    See ‘Writing portable packages’ in the ‘Writing R Extensions’ manual.
Flavors: r-devel-linux-x86_64-fedora-clang, r-devel-linux-x86_64-fedora-gcc

Version: 1.5
Check: examples
Result: ERROR
    Running examples in ‘rotations-Ex.R’ failed
    The error most likely occurred in:
    
    > ### Name: Arithmetic
    > ### Title: Arithmetic operators on SO(3)
    > ### Aliases: "+.Q4" "+.SO3" "-.Q4" "-.SO3" +.Q4 +.SO3 -.Q4 -.SO3 Arithmetic
    >
    > ### ** Examples
    >
    > U <- c(1, 0, 0) #Rotate about the x-axis
    > R1 <- as.SO3(U, pi/8) #Rotate pi/8 radians about the x-axis
    > R2 <- R1 + R1 #Rotate pi/8 radians about the x-axis twice
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
    :
     --- package (from environment) ---
    rotations
     --- call from context ---
    is.SO3(Rs)
     --- call from argument ---
    if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
    where 1: is.SO3(Rs)
    where 2: formatSO3(x)
    where 3: center.SO3(x, y)
    where 4: center(x, y)
    where 5: `+.SO3`(R1, R1)
    
     --- value of length: 2 type: logical ---
    [1] FALSE FALSE
     --- function from context ---
    function (x)
    {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
    }
    <bytecode: 0x6310970>
    <environment: namespace:rotations>
     --- function search by body ---
    Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
    Error in if (class(x) == "data.frame") R <- data.matrix(R) :
     the condition has length > 1
    Calls: +.SO3 -> center -> center.SO3 -> formatSO3 -> is.SO3
    Execution halted
Flavor: r-devel-linux-x86_64-fedora-clang

Version: 1.5
Check: tests
Result: ERROR
     Running ‘test-all.R’
    Running the tests in ‘tests/test-all.R’ failed.
    Complete output:
     > library(testthat)
     > test_check("rotations")
     Loading required package: rotations
     Loading required package: ggplot2
     Loading required package: Rcpp
     Loading required package: rgl
    
     Attaching package: 'rotations'
    
     The following object is masked from 'package:stats':
    
     median
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_arithmetic.R#3: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x46237e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 1. Error: (unknown) (@test_arithmetic.R#3) ─────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(x)
     where 3: mis.angle.SO3(R)
     where 4: mis.angle(R)
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_basics.R#11: expect_equal(mis.angle(R), abs(r))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x46237e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 2. Error: (unknown) (@test_basics.R#11) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(mis.angle(R), abs(r))
     5. rotations:::mis.angle.SO3(R)
     6. rotations:::formatSO3(x)
     7. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(as.SO3(u, r))
     where 4: as.Q4(as.SO3(u, r))
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_conversions.R#7: expect_equal(as.Q4(as.SO3(u, r)), as.Q4(u, r))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x46237e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 3. Error: (unknown) (@test_conversions.R#7) ────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(as.Q4(as.SO3(u, r)), as.Q4(u, r))
     5. rotations:::as.Q4.SO3(as.SO3(u, r))
     6. rotations:::formatSO3(R)
     7. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_discord.R#2: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x46237e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 4. Error: (unknown) (@test_discord.R#2) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_estimators.R#3: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x46237e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 5. Error: (unknown) (@test_estimators.R#3) ─────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(x)
     where 3: rot.dist.SO3(Rs, method = "intrinsic")
     where 4: rot.dist(Rs, method = "intrinsic")
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_metrics.R#5: expect_equal(rot.dist(Rs, method = "intrinsic"), abs(rs))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x46237e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 6. Error: (unknown) (@test_metrics.R#5) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(rot.dist(Rs, method = "intrinsic"), abs(rs))
     5. rotations:::rot.dist.SO3(Rs, method = "intrinsic")
     6. rotations:::formatSO3(x)
     7. rotations::is.SO3(Rs)
    
     ══ testthat results ═══════════════════════════════════════════════════════════
     [ OK: 0 | SKIPPED: 0 | WARNINGS: 0 | FAILED: 6 ]
     1. Error: (unknown) (@test_arithmetic.R#3)
     2. Error: (unknown) (@test_basics.R#11)
     3. Error: (unknown) (@test_conversions.R#7)
     4. Error: (unknown) (@test_discord.R#2)
     5. Error: (unknown) (@test_estimators.R#3)
     6. Error: (unknown) (@test_metrics.R#5)
    
     Error: testthat unit tests failed
     Execution halted
Flavor: r-devel-linux-x86_64-fedora-clang

Version: 1.5
Check: re-building of vignette outputs
Result: WARN
    Error(s) in re-building vignettes:
    --- re-building ‘rotations-intro.Rnw’ using knitr
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
    :
     --- package (from environment) ---
    rotations
     --- call from context ---
    is.SO3(Rs)
     --- call from argument ---
    if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
    where 1: is.SO3(Rs)
    where 2: formatSO3(x)
    where 3: mis.angle.SO3(R)
    where 4: mis.angle(R)
    where 5: eval(expr, envir, enclos)
    where 6: eval(expr, envir, enclos)
    where 7: withVisible(eval(expr, envir, enclos))
    where 8: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,
     error = eHandler, message = mHandler)
    where 9: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,
     enclos)), warning = wHandler, error = eHandler, message = mHandler))
    where 10: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,
     envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)))
    where 11: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,
     debug = debug, last = i == length(out), use_try = stop_on_error !=
     2L, keep_warning = keep_warning, keep_message = keep_message,
     output_handler = output_handler, include_timing = include_timing)
    where 12: evaluate::evaluate(...)
    where 13: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning),
     keep_message = !isFALSE(options$message), stop_on_error = if (options$error &&
     options$include) 0L else 2L, output_handler = knit_handlers(options$render,
     options))
    where 14: in_dir(input_dir(), evaluate(code, envir = env, new_device = FALSE,
     keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message),
     stop_on_error = if (options$error && options$include) 0L else 2L,
     output_handler = knit_handlers(options$render, options)))
    where 15: block_exec(params)
    where 16: call_block(x)
    where 17: process_group.block(group)
    where 18: process_group(group)
    where 19: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),
     error = function(e) {
     setwd(wd)
     cat(res, sep = "\n", file = output %n% "")
     message("Quitting from lines ", paste(current_lines(i),
     collapse = "-"), " (", knit_concord$get("infile"),
     ") ")
     })
    where 20: process_file(text, output)
    where 21: (if (grepl("\\.[Rr]md$", file)) knit2html_v1 else if (grepl("\\.[Rr]rst$",
     file)) knit2pandoc else knit)(file, encoding = encoding,
     quiet = quiet, envir = globalenv(), ...)
    where 22: engine$weave(file, quiet = quiet, encoding = enc)
    where 23: doTryCatch(return(expr), name, parentenv, handler)
    where 24: tryCatchOne(expr, names, parentenv, handlers[[1L]])
    where 25: tryCatchList(expr, classes, parentenv, handlers)
    where 26: tryCatch({
     engine$weave(file, quiet = quiet, encoding = enc)
     setwd(startdir)
     output <- find_vignette_product(name, by = "weave", engine = engine)
     if (!have.makefile && vignette_is_tex(output)) {
     texi2pdf(file = output, clean = FALSE, quiet = quiet)
     output <- find_vignette_product(name, by = "texi2pdf",
     engine = engine)
     }
     outputs <- c(outputs, output)
    }, error = function(e) {
     thisOK <<- FALSE
     fails <<- c(fails, file)
     message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",
     file, conditionMessage(e)))
    })
    where 27: tools:::buildVignettes(dir = "/data/gannet/ripley/R/packages/tests-clang/rotations.Rcheck/vign_test/rotations",
     ser_elibs = "/tmp/Rtmpn9nN4D/file241c8209dca.rds")
    
     --- value of length: 2 type: logical ---
    [1] FALSE FALSE
     --- function from context ---
    function (x)
    {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
    }
    <bytecode: 0x6c55720>
    <environment: namespace:rotations>
     --- function search by body ---
    Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
    Quitting from lines 121-123 (rotations-intro.Rnw)
    Error: processing vignette 'rotations-intro.Rnw' failed with diagnostics:
    the condition has length > 1
    --- failed re-building ‘rotations-intro.Rnw’
    
    SUMMARY: processing the following file failed:
     ‘rotations-intro.Rnw’
    
    Error: Vignette re-building failed.
    Execution halted
Flavor: r-devel-linux-x86_64-fedora-clang

Version: 1.5
Check: examples
Result: ERROR
    Running examples in ‘rotations-Ex.R’ failed
    The error most likely occurred in:
    
    > ### Name: Arithmetic
    > ### Title: Arithmetic operators on SO(3)
    > ### Aliases: "+.Q4" "+.SO3" "-.Q4" "-.SO3" +.Q4 +.SO3 -.Q4 -.SO3 Arithmetic
    >
    > ### ** Examples
    >
    > U <- c(1, 0, 0) #Rotate about the x-axis
    > R1 <- as.SO3(U, pi/8) #Rotate pi/8 radians about the x-axis
    > R2 <- R1 + R1 #Rotate pi/8 radians about the x-axis twice
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
    :
     --- package (from environment) ---
    rotations
     --- call from context ---
    is.SO3(Rs)
     --- call from argument ---
    if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
    where 1: is.SO3(Rs)
    where 2: formatSO3(x)
    where 3: center.SO3(x, y)
    where 4: center(x, y)
    where 5: `+.SO3`(R1, R1)
    
     --- value of length: 2 type: logical ---
    [1] FALSE FALSE
     --- function from context ---
    function (x)
    {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
    }
    <bytecode: 0x5593128>
    <environment: namespace:rotations>
     --- function search by body ---
    Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
    Error in if (class(x) == "data.frame") R <- data.matrix(R) :
     the condition has length > 1
    Calls: +.SO3 -> center -> center.SO3 -> formatSO3 -> is.SO3
    Execution halted
Flavor: r-devel-linux-x86_64-fedora-gcc

Version: 1.5
Check: tests
Result: ERROR
     Running ‘test-all.R’
    Running the tests in ‘tests/test-all.R’ failed.
    Complete output:
     > library(testthat)
     > test_check("rotations")
     Loading required package: rotations
     Loading required package: ggplot2
     Loading required package: Rcpp
     Loading required package: rgl
    
     Attaching package: 'rotations'
    
     The following object is masked from 'package:stats':
    
     median
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_arithmetic.R#3: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x55eb5e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 1. Error: (unknown) (@test_arithmetic.R#3) ─────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(x)
     where 3: mis.angle.SO3(R)
     where 4: mis.angle(R)
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_basics.R#11: expect_equal(mis.angle(R), abs(r))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x55eb5e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 2. Error: (unknown) (@test_basics.R#11) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(mis.angle(R), abs(r))
     5. rotations:::mis.angle.SO3(R)
     6. rotations:::formatSO3(x)
     7. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(as.SO3(u, r))
     where 4: as.Q4(as.SO3(u, r))
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_conversions.R#7: expect_equal(as.Q4(as.SO3(u, r)), as.Q4(u, r))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x55eb5e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 3. Error: (unknown) (@test_conversions.R#7) ────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(as.Q4(as.SO3(u, r)), as.Q4(u, r))
     5. rotations:::as.Q4.SO3(as.SO3(u, r))
     6. rotations:::formatSO3(R)
     7. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_discord.R#2: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x55eb5e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 4. Error: (unknown) (@test_discord.R#2) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(R)
     where 3: as.Q4.SO3(Rs)
     where 4 at testthat/test_estimators.R#3: as.Q4(Rs)
     where 5: eval(code, test_env)
     where 6: eval(code, test_env)
     where 7: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 8: doTryCatch(return(expr), name, parentenv, handler)
     where 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 10: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 13: tryCatchList(expr, classes, parentenv, handlers)
     where 14: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 15: test_code(NULL, exprs, env)
     where 16: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 17: force(code)
     where 18: doWithOneRestart(return(expr), restart)
     where 19: withOneRestart(expr, restarts[[1L]])
     where 20: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 21: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 22: FUN(X[[i]], ...)
     where 23: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 24: force(code)
     where 25: doWithOneRestart(return(expr), restart)
     where 26: withOneRestart(expr, restarts[[1L]])
     where 27: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 28: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 29: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 30: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 31: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 32: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x55eb5e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 5. Error: (unknown) (@test_estimators.R#3) ─────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. rotations::as.Q4(Rs)
     2. rotations:::as.Q4.SO3(Rs)
     3. rotations:::formatSO3(R)
     4. rotations::is.SO3(Rs)
    
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
     :
     --- package (from environment) ---
     rotations
     --- call from context ---
     is.SO3(Rs)
     --- call from argument ---
     if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
     where 1: is.SO3(Rs)
     where 2: formatSO3(x)
     where 3: rot.dist.SO3(Rs, method = "intrinsic")
     where 4: rot.dist(Rs, method = "intrinsic")
     where 5: eval_bare(expr, quo_get_env(quo))
     where 6: quasi_label(enquo(object), label, arg = "object")
     where 7 at testthat/test_metrics.R#5: expect_equal(rot.dist(Rs, method = "intrinsic"), abs(rs))
     where 8: eval(code, test_env)
     where 9: eval(code, test_env)
     where 10: withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error)
     where 11: doTryCatch(return(expr), name, parentenv, handler)
     where 12: tryCatchOne(expr, names, parentenv, handlers[[1L]])
     where 13: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
     where 14: doTryCatch(return(expr), name, parentenv, handler)
     where 15: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
     names[nh], parentenv, handlers[[nh]])
     where 16: tryCatchList(expr, classes, parentenv, handlers)
     where 17: tryCatch(withCallingHandlers({
     eval(code, test_env)
     if (!handled && !is.null(test)) {
     skip_empty()
     }
     }, expectation = handle_expectation, skip = handle_skip, warning = handle_warning,
     message = handle_message, error = handle_error), error = handle_fatal,
     skip = function(e) {
     })
     where 18: test_code(NULL, exprs, env)
     where 19: source_file(path, new.env(parent = env), chdir = TRUE, wrap = wrap)
     where 20: force(code)
     where 21: doWithOneRestart(return(expr), restart)
     where 22: withOneRestart(expr, restarts[[1L]])
     where 23: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 24: with_reporter(reporter = reporter, start_end_reporter = start_end_reporter,
     {
     reporter$start_file(basename(path))
     lister$start_file(basename(path))
     source_file(path, new.env(parent = env), chdir = TRUE,
     wrap = wrap)
     reporter$.end_context()
     reporter$end_file()
     })
     where 25: FUN(X[[i]], ...)
     where 26: lapply(paths, test_file, env = env, reporter = current_reporter,
     start_end_reporter = FALSE, load_helpers = FALSE, wrap = wrap)
     where 27: force(code)
     where 28: doWithOneRestart(return(expr), restart)
     where 29: withOneRestart(expr, restarts[[1L]])
     where 30: withRestarts(testthat_abort_reporter = function() NULL, force(code))
     where 31: with_reporter(reporter = current_reporter, results <- lapply(paths,
     test_file, env = env, reporter = current_reporter, start_end_reporter = FALSE,
     load_helpers = FALSE, wrap = wrap))
     where 32: test_files(paths, reporter = reporter, env = env, stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 33: test_dir(path = test_path, reporter = reporter, env = env, filter = filter,
     ..., stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning,
     wrap = wrap)
     where 34: test_package_dir(package = package, test_path = test_path, filter = filter,
     reporter = reporter, ..., stop_on_failure = stop_on_failure,
     stop_on_warning = stop_on_warning, wrap = wrap)
     where 35: test_check("rotations")
    
     --- value of length: 2 type: logical ---
     [1] FALSE FALSE
     --- function from context ---
     function (x)
     {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
     }
     <bytecode: 0x55eb5e8>
     <environment: namespace:rotations>
     --- function search by body ---
     Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
     ── 6. Error: (unknown) (@test_metrics.R#5) ────────────────────────────────────
     the condition has length > 1
     Backtrace:
     1. testthat::expect_equal(rot.dist(Rs, method = "intrinsic"), abs(rs))
     5. rotations:::rot.dist.SO3(Rs, method = "intrinsic")
     6. rotations:::formatSO3(x)
     7. rotations::is.SO3(Rs)
    
     ══ testthat results ═══════════════════════════════════════════════════════════
     [ OK: 0 | SKIPPED: 0 | WARNINGS: 0 | FAILED: 6 ]
     1. Error: (unknown) (@test_arithmetic.R#3)
     2. Error: (unknown) (@test_basics.R#11)
     3. Error: (unknown) (@test_conversions.R#7)
     4. Error: (unknown) (@test_discord.R#2)
     5. Error: (unknown) (@test_estimators.R#3)
     6. Error: (unknown) (@test_metrics.R#5)
    
     Error: testthat unit tests failed
     Execution halted
Flavor: r-devel-linux-x86_64-fedora-gcc

Version: 1.5
Check: re-building of vignette outputs
Result: WARN
    Error(s) in re-building vignettes:
    --- re-building ‘rotations-intro.Rnw’ using knitr
     ----------- FAILURE REPORT --------------
     --- failure: the condition has length > 1 ---
     --- srcref ---
    :
     --- package (from environment) ---
    rotations
     --- call from context ---
    is.SO3(Rs)
     --- call from argument ---
    if (class(x) == "data.frame") R <- data.matrix(R)
     --- R stacktrace ---
    where 1: is.SO3(Rs)
    where 2: formatSO3(x)
    where 3: mis.angle.SO3(R)
    where 4: mis.angle(R)
    where 5: eval(expr, envir, enclos)
    where 6: eval(expr, envir, enclos)
    where 7: withVisible(eval(expr, envir, enclos))
    where 8: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,
     error = eHandler, message = mHandler)
    where 9: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,
     enclos)), warning = wHandler, error = eHandler, message = mHandler))
    where 10: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,
     envir, enclos)), warning = wHandler, error = eHandler, message = mHandler)))
    where 11: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,
     debug = debug, last = i == length(out), use_try = stop_on_error !=
     2L, keep_warning = keep_warning, keep_message = keep_message,
     output_handler = output_handler, include_timing = include_timing)
    where 12: evaluate::evaluate(...)
    where 13: evaluate(code, envir = env, new_device = FALSE, keep_warning = !isFALSE(options$warning),
     keep_message = !isFALSE(options$message), stop_on_error = if (options$error &&
     options$include) 0L else 2L, output_handler = knit_handlers(options$render,
     options))
    where 14: in_dir(input_dir(), evaluate(code, envir = env, new_device = FALSE,
     keep_warning = !isFALSE(options$warning), keep_message = !isFALSE(options$message),
     stop_on_error = if (options$error && options$include) 0L else 2L,
     output_handler = knit_handlers(options$render, options)))
    where 15: block_exec(params)
    where 16: call_block(x)
    where 17: process_group.block(group)
    where 18: process_group(group)
    where 19: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group),
     error = function(e) {
     setwd(wd)
     cat(res, sep = "\n", file = output %n% "")
     message("Quitting from lines ", paste(current_lines(i),
     collapse = "-"), " (", knit_concord$get("infile"),
     ") ")
     })
    where 20: process_file(text, output)
    where 21: (if (grepl("\\.[Rr]md$", file)) knit2html_v1 else if (grepl("\\.[Rr]rst$",
     file)) knit2pandoc else knit)(file, encoding = encoding,
     quiet = quiet, envir = globalenv(), ...)
    where 22: engine$weave(file, quiet = quiet, encoding = enc)
    where 23: doTryCatch(return(expr), name, parentenv, handler)
    where 24: tryCatchOne(expr, names, parentenv, handlers[[1L]])
    where 25: tryCatchList(expr, classes, parentenv, handlers)
    where 26: tryCatch({
     engine$weave(file, quiet = quiet, encoding = enc)
     setwd(startdir)
     output <- find_vignette_product(name, by = "weave", engine = engine)
     if (!have.makefile && vignette_is_tex(output)) {
     texi2pdf(file = output, clean = FALSE, quiet = quiet)
     output <- find_vignette_product(name, by = "texi2pdf",
     engine = engine)
     }
     outputs <- c(outputs, output)
    }, error = function(e) {
     thisOK <<- FALSE
     fails <<- c(fails, file)
     message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s",
     file, conditionMessage(e)))
    })
    where 27: tools:::buildVignettes(dir = "/data/gannet/ripley/R/packages/tests-devel/rotations.Rcheck/vign_test/rotations",
     ser_elibs = "/tmp/RtmpJkYXFk/fileb7744ec41c.rds")
    
     --- value of length: 2 type: logical ---
    [1] FALSE FALSE
     --- function from context ---
    function (x)
    {
     Rlen <- length(x)
     if (Rlen%%9 != 0) {
     return(FALSE)
     }
     R <- x
     if (class(x) == "data.frame")
     R <- data.matrix(R)
     R <- matrix(R, ncol = 9)
     apply(R, 1, function(R) {
     R <- matrix(R, 3, 3)
     if (any(is.na(R)))
     return(FALSE)
     if (abs(det(R) - 1) > 1e-09)
     return(FALSE)
     return(all(abs(t(R) %*% R - diag(1, 3)) < 1e-04))
     })
    }
    <bytecode: 0x6d64ed0>
    <environment: namespace:rotations>
     --- function search by body ---
    Function is.SO3 in namespace rotations has this body.
     ----------- END OF FAILURE REPORT --------------
    Quitting from lines 121-123 (rotations-intro.Rnw)
    Error: processing vignette 'rotations-intro.Rnw' failed with diagnostics:
    the condition has length > 1
    --- failed re-building ‘rotations-intro.Rnw’
    
    SUMMARY: processing the following file failed:
     ‘rotations-intro.Rnw’
    
    Error: Vignette re-building failed.
    Execution halted
Flavor: r-devel-linux-x86_64-fedora-gcc

Version: 1.5
Check: whether package can be installed
Result: WARN
    Found the following significant warnings:
     Warning: 'rgl_init' failed, running with rgl.useNULL = TRUE
Flavor: r-release-osx-x86_64