Implemented basic functionality of setdiff
This commit is contained in:
parent
f28bf5d763
commit
eba8705d9e
2 changed files with 24 additions and 4 deletions
13
R/setdiff.R
Normal file
13
R/setdiff.R
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
#' @title Set differences of two arrays
|
||||||
|
#' @description Loosely replicates the behavior of the homonym Matlab function
|
||||||
|
#' @param A first array
|
||||||
|
#' @param B second awway
|
||||||
|
#' @param legacy if `TRUE`, preserves the behavior of
|
||||||
|
#' @return
|
||||||
|
#' @author Waldir Leoncio
|
||||||
|
#' @export
|
||||||
|
setdiff <- function(A, B, legacy = FALSE) {
|
||||||
|
values <- sort(unique(A[is.na(match(A, B))]))
|
||||||
|
# browser() # TEMP
|
||||||
|
return(values)
|
||||||
|
}
|
||||||
|
|
@ -158,10 +158,10 @@ test_that("find works as expected", {
|
||||||
})
|
})
|
||||||
|
|
||||||
test_that("sortrows works as expected", {
|
test_that("sortrows works as expected", {
|
||||||
mx <- matrix(c(3, 2, 2, 1, 1, 10, 0, pi), 4)
|
mx <- matrix(c(3, 2, 2, 1, 1, 10, 0, pi), 4)
|
||||||
expect_equal(sortrows(mx), matrix(c(1, 2, 2, 3, pi, 10, 0, 1), 4))
|
expect_equal(sortrows(mx), matrix(c(1, 2, 2, 3, pi, 10, 0, 1), 4))
|
||||||
expect_equal(sortrows(mx, 2), matrix(c(2, 3, 1, 2, 0, 1, pi, 10), 4))
|
expect_equal(sortrows(mx, 2), matrix(c(2, 3, 1, 2, 0, 1, pi, 10), 4))
|
||||||
expect_equal(sortrows(mx, 1:2), mx[order(mx[, 1], mx[, 2]), ])
|
expect_equal(sortrows(mx, 1:2), mx[order(mx[, 1], mx[, 2]), ])
|
||||||
})
|
})
|
||||||
|
|
||||||
test_that("cell works as expected", {
|
test_that("cell works as expected", {
|
||||||
|
|
@ -218,3 +218,10 @@ test_that("nargin works correctly", {
|
||||||
expect_equal(addme(13), 26)
|
expect_equal(addme(13), 26)
|
||||||
expect_equal(addme(), 0)
|
expect_equal(addme(), 0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test_that("setdiff works as expected", {
|
||||||
|
A <- c(3, 6, 2, 1, 5, 1, 1)
|
||||||
|
B <- c(2, 4, 6)
|
||||||
|
expect_equal(setdiff(A, B), list(c(1, 3, 5), 4, 1, 5))
|
||||||
|
# TODO: add more examples from https://se.mathworks.com/help/matlab/ref/double.setdiff.html;jsessionid=0d8d42582d4d299b8224403899f1
|
||||||
|
})
|
||||||
Loading…
Add table
Reference in a new issue