Skip to contents

Close an outline by duplicating the first point at the end, or open by removing duplicate endpoint.

Usage

coo_close(x, ..., .cols = NULL, .ldk_col = NULL)

coo_open(x, ..., .cols = NULL, .ldk_col = NULL)

Arguments

x

A matrix (nx2), list of matrices, or tibble with coo columns.

...

Additional arguments (reserved for future use).

.cols

Column name(s) to process when x is a tibble. If NULL, automatically detects columns containing coo columns.

Value

  • If x is a single matrix: returns the matrix (closed or opened)

  • If x is a list: returns a list of matrices

  • If x is a tibble: returns the tibble with modified coo column(s)

Details

coo_close(): If the last point is not identical to the first, adds the first point at the end. If already closed, returns unchanged.

coo_open(): If the last point is identical to the first, removes it. If already open, returns unchanged.

Landmarks are NOT adjusted - they keep their original indices.

See also

coo_sample() for resampling; coo_close_spread() for closing by spreading gap

Examples

# Close a shape
coo_close(shapes$cat)
#> <xy [121 x 2]>
#>       [,1] [,2]
#>  [1,] 200   62 
#>  [2,] 196   56 
#>  [3,] 200   56 
#>  [4,] 206   54 
#>  [5,] 209   48 
#>  [6,] ...  ... 
#>  [7,] 213   47 
#>  [8,] 208   53 
#>  [9,] 204   59 
#> [10,] 202   65 
#> [11,] 200   62 

# Open a closed shape
coo_open(shapes$cat)
#> <xy [120 x 2]>
#>       [,1] [,2]
#>  [1,] 200   62 
#>  [2,] 196   56 
#>  [3,] 200   56 
#>  [4,] 206   54 
#>  [5,] 209   48 
#>  [6,] ...  ... 
#>  [7,] 219   45 
#>  [8,] 213   47 
#>  [9,] 208   53 
#> [10,] 204   59 
#> [11,] 202   65 

# Works on lists
coo_close(bot$coo)
#> $brahma
#> <xy [139 x 2]>
#>       [,1] [,2]
#>  [1,]  37  561 
#>  [2,]  40  540 
#>  [3,]  40  529 
#>  [4,]  43  508 
#>  [5,]  46  487 
#>  [6,] ...  ... 
#>  [7,]  33  645 
#>  [8,]  33  624 
#>  [9,]  34  603 
#> [10,]  35  593 
#> [11,]  37  561 
#> 
#> $caney
#> <xy [169 x 2]>
#>       [,1] [,2]
#>  [1,]  53  535 
#>  [2,]  53  525 
#>  [3,]  54  505 
#>  [4,]  53  495 
#>  [5,]  54  485 
#>  [6,] ...  ... 
#>  [7,]  67  596 
#>  [8,]  62  585 
#>  [9,]  59  575 
#> [10,]  55  555 
#> [11,]  53  535 
#> 
#> $chimay
#> <xy [190 x 2]>
#>       [,1] [,2]
#>  [1,]  49  333 
#>  [2,]  49  325 
#>  [3,]  49  318 
#>  [4,]  50  310 
#>  [5,]  50  302 
#>  [6,] ...  ... 
#>  [7,]  54  371 
#>  [8,]  51  364 
#>  [9,]  49  356 
#> [10,]  48  348 
#> [11,]  49  333 
#> 
#> $corona
#> <xy [130 x 2]>
#>       [,1] [,2]
#>  [1,]  91  426 
#>  [2,]  91  416 
#>  [3,]  90  395 
#>  [4,]  91  385 
#>  [5,]  91  374 
#>  [6,] ...  ... 
#>  [7,] 110  486 
#>  [8,] 105  477 
#>  [9,] 101  466 
#> [10,]  94  447 
#> [11,]  91  426 
#> 
#> $deusventrue
#> <xy [153 x 2]>
#>       [,1] [,2]
#>  [1,]  74  481 
#>  [2,]  70  472 
#>  [3,]  62  454 
#>  [4,]  59  445 
#>  [5,]  52  425 
#>  [6,] ...  ... 
#>  [7,]  97  545 
#>  [8,]  90  527 
#>  [9,]  87  518 
#> [10,]  82  500 
#> [11,]  74  481 
#> 
#> $duvel
#> <xy [162 x 2]>
#>       [,1] [,2]
#>  [1,]  61  315 
#>  [2,]  61  304 
#>  [3,]  61  293 
#>  [4,]  61  293 
#>  [5,]  61  282 
#>  [6,] ...  ... 
#>  [7,]  69  358 
#>  [8,]  65  348 
#>  [9,]  65  348 
#> [10,]  63  337 
#> [11,]  61  315 
#> 
#> $franziskaner
#> <xy [125 x 2]>
#>       [,1] [,2]
#>  [1,]  54  439 
#>  [2,]  54  418 
#>  [3,]  54  408 
#>  [4,]  54  389 
#>  [5,]  54  379 
#>  [6,] ...  ... 
#>  [7,]  59  511 
#>  [8,]  57  501 
#>  [9,]  54  480 
#> [10,]  54  470 
#> [11,]  54  439 
#> 
#> $grimbergen
#> <xy [127 x 2]>
#>       [,1] [,2]
#>  [1,]  42  404 
#>  [2,]  40  394 
#>  [3,]  40  373 
#>  [4,]  40  362 
#>  [5,]  40  352 
#>  [6,] ...  ... 
#>  [7,]  60  467 
#>  [8,]  54  456 
#>  [9,]  50  446 
#> [10,]  44  425 
#> [11,]  42  404 
#> 
#> $guiness
#> <xy [184 x 2]>
#>       [,1] [,2]
#>  [1,]  69  385 
#>  [2,]  69  377 
#>  [3,]  69  369 
#>  [4,]  69  360 
#>  [5,]  69  344 
#>  [6,] ...  ... 
#>  [7,]  71  433 
#>  [8,]  67  418 
#>  [9,]  68  410 
#> [10,]  69  401 
#> [11,]  69  385 
#> 
#> $hoegardeen
#> <xy [194 x 2]>
#>       [,1] [,2]
#>  [1,]  42  544 
#>  [2,]  40  531 
#>  [3,]  40  519 
#>  [4,]  40  506 
#>  [5,]  40  493 
#>  [6,] ...  ... 
#>  [7,]  54  606 
#>  [8,]  51  594 
#>  [9,]  47  581 
#> [10,]  46  568 
#> [11,]  42  544 
#> 
#> $jupiler
#> <xy [157 x 2]>
#>       [,1] [,2]
#>  [1,]  55  515 
#>  [2,]  54  501 
#>  [3,]  54  488 
#>  [4,]  54  474 
#>  [5,]  54  460 
#>  [6,] ...  ... 
#>  [7,]  69  583 
#>  [8,]  66  570 
#>  [9,]  62  556 
#> [10,]  59  542 
#> [11,]  55  515 
#> 
#> $kingfisher
#> <xy [183 x 2]>
#>       [,1] [,2]
#>  [1,]  71  384 
#>  [2,]  71  374 
#>  [3,]  71  365 
#>  [4,]  71  355 
#>  [5,]  71  345 
#>  [6,] ...  ... 
#>  [7,]  78  433 
#>  [8,]  76  423 
#>  [9,]  73  413 
#> [10,]  73  403 
#> [11,]  71  384 
#> 
#> $latrappe
#> <xy [137 x 2]>
#>       [,1] [,2]
#>  [1,]  26  389 
#>  [2,]  25  377 
#>  [3,]  25  364 
#>  [4,]  25  352 
#>  [5,]  25  339 
#>  [6,] ...  ... 
#>  [7,]  25  451 
#>  [8,]  26  439 
#>  [9,]  26  426 
#> [10,]  26  414 
#> [11,]  26  389 
#> 
#> $lindemanskriek
#> <xy [177 x 2]>
#>       [,1] [,2]
#>  [1,]  60  427 
#>  [2,]  60  419 
#>  [3,]  55  404 
#>  [4,]  54  395 
#>  [5,]  54  387 
#>  [6,] ...  ... 
#>  [7,]  75  478 
#>  [8,]  72  469 
#>  [9,]  70  461 
#> [10,]  65  444 
#> [11,]  60  427 
#> 
#> $nicechouffe
#> <xy [147 x 2]>
#>       [,1] [,2]
#>  [1,]  82  361 
#>  [2,]  81  353 
#>  [3,]  77  336 
#>  [4,]  77  327 
#>  [5,]  76  319 
#>  [6,] ...  ... 
#>  [7,]  93  410 
#>  [8,]  91  401 
#>  [9,]  89  394 
#> [10,]  85  378 
#> [11,]  82  361 
#> 
#> $pecheresse
#> <xy [130 x 2]>
#>       [,1] [,2]
#>  [1,]  63  495 
#>  [2,]  61  476 
#>  [3,]  61  467 
#>  [4,]  60  447 
#>  [5,]  58  428 
#>  [6,] ...  ... 
#>  [7,]  83  570 
#>  [8,]  78  552 
#>  [9,]  73  533 
#> [10,]  71  524 
#> [11,]  63  495 
#> 
#> $sierranevada
#> <xy [177 x 2]>
#>       [,1] [,2]
#>  [1,]  61  345 
#>  [2,]  61  333 
#>  [3,]  61  333 
#>  [4,]  61  320 
#>  [5,]  61  308 
#>  [6,] ...  ... 
#>  [7,]  61  394 
#>  [8,]  59  382 
#>  [9,]  61  370 
#> [10,]  61  370 
#> [11,]  61  345 
#> 
#> $tanglefoot
#> <xy [175 x 2]>
#>       [,1] [,2]
#>  [1,]  48  367 
#>  [2,]  48  359 
#>  [3,]  48  351 
#>  [4,]  48  335 
#>  [5,]  49  327 
#>  [6,] ...  ... 
#>  [7,]  49  415 
#>  [8,]  48  407 
#>  [9,]  47  391 
#> [10,]  47  383 
#> [11,]  48  367 
#> 
#> $tauro
#> <xy [175 x 2]>
#>       [,1] [,2]
#>  [1,]  56  515 
#>  [2,]  54  503 
#>  [3,]  54  491 
#>  [4,]  54  478 
#>  [5,]  54  466 
#>  [6,] ...  ... 
#>  [7,]  68  575 
#>  [8,]  63  563 
#>  [9,]  61  551 
#> [10,]  59  538 
#> [11,]  56  515 
#> 
#> $westmalle
#> <xy [142 x 2]>
#>       [,1] [,2]
#>  [1,]  70  394 
#>  [2,]  70  386 
#>  [3,]  67  369 
#>  [4,]  67  361 
#>  [5,]  66  344 
#>  [6,] ...  ... 
#>  [7,]  83  452 
#>  [8,]  80  436 
#>  [9,]  76  427 
#> [10,]  74  411 
#> [11,]  70  394 
#> 
#> $amrut
#> <xy [192 x 2]>
#>       [,1] [,2]
#>  [1,]  57  441 
#>  [2,]  57  431 
#>  [3,]  57  421 
#>  [4,]  57  411 
#>  [5,]  57  401 
#>  [6,] ...  ... 
#>  [7,]  57  491 
#>  [8,]  57  481 
#>  [9,]  57  471 
#> [10,]  57  461 
#> [11,]  57  441 
#> 
#> $ballantines
#> <xy [147 x 2]>
#>       [,1] [,2]
#>  [1,]  38  357 
#>  [2,]  38  341 
#>  [3,]  38  333 
#>  [4,]  38  318 
#>  [5,]  38  310 
#>  [6,] ...  ... 
#>  [7,]  38  412 
#>  [8,]  38  404 
#>  [9,]  38  388 
#> [10,]  38  381 
#> [11,]  38  357 
#> 
#> $bushmills
#> <xy [166 x 2]>
#>       [,1] [,2]
#>  [1,]  72  456 
#>  [2,]  72  441 
#>  [3,]  72  425 
#>  [4,]  72  425 
#>  [5,]  72  410 
#>  [6,] ...  ... 
#>  [7,]  70  518 
#>  [8,]  70  502 
#>  [9,]  70  502 
#> [10,]  70  487 
#> [11,]  72  456 
#> 
#> $chivas
#> <xy [165 x 2]>
#>       [,1] [,2]
#>  [1,]  33  437 
#>  [2,]  31  429 
#>  [3,]  29  412 
#>  [4,]  29  404 
#>  [5,]  29  388 
#>  [6,] ...  ... 
#>  [7,]  73  495 
#>  [8,]  57  478 
#>  [9,]  51  470 
#> [10,]  40  453 
#> [11,]  33  437 
#> 
#> $dalmore
#> <xy [156 x 2]>
#>       [,1] [,2]
#>  [1,]  52  371 
#>  [2,]  47  359 
#>  [3,]  44  346 
#>  [4,]  42  334 
#>  [5,]  42  322 
#>  [6,] ...  ... 
#>  [7,] 102  430 
#>  [8,]  89  419 
#>  [9,]  77  408 
#> [10,]  67  396 
#> [11,]  52  371 
#> 
#> $famousgrouse
#> <xy [170 x 2]>
#>       [,1] [,2]
#>  [1,]  99  313 
#>  [2,]  99  303 
#>  [3,]  99  294 
#>  [4,]  99  284 
#>  [5,]  99  284 
#>  [6,] ...  ... 
#>  [7,]  97  351 
#>  [8,]  97  351 
#>  [9,]  97  342 
#> [10,]  97  332 
#> [11,]  99  313 
#> 
#> $glendronach
#> <xy [198 x 2]>
#>       [,1] [,2]
#>  [1,]  73  435 
#>  [2,]  73  423 
#>  [3,]  74  411 
#>  [4,]  74  411 
#>  [5,]  74  399 
#>  [6,] ...  ... 
#>  [7,]  72  483 
#>  [8,]  73  471 
#>  [9,]  73  471 
#> [10,]  73  459 
#> [11,]  73  435 
#> 
#> $glenmorangie
#> <xy [180 x 2]>
#>       [,1] [,2]
#>  [1,]  53  518 
#>  [2,]  54  501 
#>  [3,]  54  501 
#>  [4,]  54  485 
#>  [5,]  55  468 
#>  [6,] ...  ... 
#>  [7,]  58  584 
#>  [8,]  54  567 
#>  [9,]  53  550 
#> [10,]  53  550 
#> [11,]  53  518 
#> 
#> $highlandpark
#> <xy [170 x 2]>
#>       [,1] [,2]
#>  [1,]  42  371 
#>  [2,]  42  357 
#>  [3,]  42  357 
#>  [4,]  42  343 
#>  [5,]  42  329 
#>  [6,] ...  ... 
#>  [7,]  42  427 
#>  [8,]  42  413 
#>  [9,]  42  399 
#> [10,]  42  399 
#> [11,]  42  371 
#> 
#> $jackdaniels
#> <xy [151 x 2]>
#>       [,1] [,2]
#>  [1,]  63  414 
#>  [2,]  63  401 
#>  [3,]  63  388 
#>  [4,]  63  375 
#>  [5,]  63  362 
#>  [6,] ...  ... 
#>  [7,]  68  479 
#>  [8,]  65  466 
#>  [9,]  64  453 
#> [10,]  65  440 
#> [11,]  63  414 
#> 
#> $jb
#> <xy [175 x 2]>
#>       [,1] [,2]
#>  [1,]  43  531 
#>  [2,]  43  520 
#>  [3,]  42  510 
#>  [4,]  42  488 
#>  [5,]  43  477 
#>  [6,] ...  ... 
#>  [7,]  40  595 
#>  [8,]  42  585 
#>  [9,]  43  563 
#> [10,]  43  552 
#> [11,]  43  531 
#> 
#> $johnniewalker
#> <xy [169 x 2]>
#>       [,1] [,2]
#>  [1,] 133  175 
#>  [2,] 133  171 
#>  [3,] 133  167 
#>  [4,] 133  163 
#>  [5,] 134  155 
#>  [6,] ...  ... 
#>  [7,] 133  199 
#>  [8,] 133  191 
#>  [9,] 133  187 
#> [10,] 133  183 
#> [11,] 133  175 
#> 
#> $magallan
#> <xy [142 x 2]>
#>       [,1] [,2]
#>  [1,]  78  397 
#>  [2,]  78  382 
#>  [3,]  80  375 
#>  [4,]  80  361 
#>  [5,]  81  346 
#>  [6,] ...  ... 
#>  [7,]  75  455 
#>  [8,]  75  441 
#>  [9,]  77  426 
#> [10,]  77  419 
#> [11,]  78  397 
#> 
#> $makersmark
#> <xy [178 x 2]>
#>       [,1] [,2]
#>  [1,]  31  432 
#>  [2,]  23  420 
#>  [3,]  16  408 
#>  [4,]  16  408 
#>  [5,]  13  394 
#>  [6,] ...  ... 
#>  [7,]  74  473 
#>  [8,]  67  464 
#>  [9,]  67  464 
#> [10,]  53  454 
#> [11,]  31  432 
#> 
#> $oban
#> <xy [180 x 2]>
#>       [,1] [,2]
#>  [1,]  74  457 
#>  [2,]  74  448 
#>  [3,]  74  431 
#>  [4,]  74  423 
#>  [5,]  74  414 
#>  [6,] ...  ... 
#>  [7,]  73  508 
#>  [8,]  73  500 
#>  [9,]  73  491 
#> [10,]  73  474 
#> [11,]  74  457 
#> 
#> $oldpotrero
#> <xy [132 x 2]>
#>       [,1] [,2]
#>  [1,]  83  307 
#>  [2,]  77  299 
#>  [3,]  71  291 
#>  [4,]  63  274 
#>  [5,]  60  265 
#>  [6,] ...  ... 
#>  [7,] 117  358 
#>  [8,] 112  349 
#>  [9,] 101  333 
#> [10,]  95  324 
#> [11,]  83  307 
#> 
#> $redbreast
#> <xy [178 x 2]>
#>       [,1] [,2]
#>  [1,] 105  233 
#>  [2,] 103  228 
#>  [3,] 101  224 
#>  [4,]  98  214 
#>  [5,]  98  210 
#>  [6,] ...  ... 
#>  [7,] 132  257 
#>  [8,] 127  253 
#>  [9,] 118  246 
#> [10,] 113  242 
#> [11,] 105  233 
#> 
#> $tamdhu
#> <xy [177 x 2]>
#>       [,1] [,2]
#>  [1,]  49  552 
#>  [2,]  49  540 
#>  [3,]  49  527 
#>  [4,]  49  515 
#>  [5,]  49  503 
#>  [6,] ...  ... 
#>  [7,]  44  613 
#>  [8,]  45  601 
#>  [9,]  46  589 
#> [10,]  47  577 
#> [11,]  49  552 
#> 
#> $wildturkey
#> <xy [186 x 2]>
#>       [,1] [,2]
#>  [1,]  18  569 
#>  [2,]  18  555 
#>  [3,]  18  541 
#>  [4,]  18  527 
#>  [5,]  18  513 
#>  [6,] ...  ... 
#>  [7,]  18  638 
#>  [8,]  15  625 
#>  [9,]  15  611 
#> [10,]  15  597 
#> [11,]  18  569 
#> 
#> $yoichi
#> <xy [124 x 2]>
#>       [,1] [,2]
#>  [1,]  69  384 
#>  [2,]  69  369 
#>  [3,]  69  355 
#>  [4,]  69  340 
#>  [5,]  69  325 
#>  [6,] ...  ... 
#>  [7,]  68  450 
#>  [8,]  68  435 
#>  [9,]  68  421 
#> [10,]  69  406 
#> [11,]  69  384 
#> 
#> attr(,"class")
#> [1] "out"  "coo"  "list"

# Works on tibbles
coo_open(bot)
#> # A tibble: 40 × 3
#>    coo       type   dummy
#>    <out>     <fct>  <fct>
#>  1 (138 x 2) whisky a    
#>  2 (168 x 2) whisky a    
#>  3 (189 x 2) whisky a    
#>  4 (129 x 2) whisky a    
#>  5 (152 x 2) whisky a    
#>  6 (161 x 2) whisky a    
#>  7 (124 x 2) whisky a    
#>  8 (126 x 2) whisky a    
#>  9 (183 x 2) whisky a    
#> 10 (193 x 2) whisky a    
#> # ℹ 30 more rows