This is a duration method for the seq()
generic.
Using seq()
on duration objects always retains the type of from
.
When calling seq()
, exactly two of the following must be specified:
to
by
Either
length.out
oralong.with
Usage
# S3 method for class 'clock_duration'
seq(from, to = NULL, by = NULL, length.out = NULL, along.with = NULL, ...)
Arguments
- from
[clock_duration(1)]
A duration to start the sequence from.
- to
[clock_duration(1) / NULL]
A duration to stop the sequence at.
to
is cast to the type offrom
.to
is only included in the result if the resulting sequence divides the distance betweenfrom
andto
exactly.- by
[integer(1) / clock_duration(1) / NULL]
The unit to increment the sequence by.
If
by
is an integer, it is transformed into a duration with the precision offrom
.If
by
is a duration, it is cast to the type offrom
.- length.out
[positive integer(1) / NULL]
The length of the resulting sequence.
If specified,
along.with
must beNULL
.- along.with
[vector / NULL]
A vector who's length determines the length of the resulting sequence.
Equivalent to
length.out = vec_size(along.with)
.If specified,
length.out
must beNULL
.- ...
These dots are for future extensions and must be empty.
Details
If from > to
and by > 0
, then the result will be length 0. This matches
the behavior of rlang::seq2()
, and results in nicer theoretical
properties when compared with throwing an error. Similarly, if from < to
and by < 0
, then the result will also be length 0.
Examples
seq(duration_days(0), duration_days(100), by = 5)
#> <duration<day>[21]>
#> [1] 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80
#> [18] 85 90 95 100
# Using a duration `by`. Note that `by` is cast to the type of `from`.
seq(duration_days(0), duration_days(100), by = duration_weeks(1))
#> <duration<day>[15]>
#> [1] 0 7 14 21 28 35 42 49 56 63 70 77 84 91 98
# `to` is cast from 5 years to 60 months
# `by` is cast from 1 quarter to 4 months
seq(duration_months(0), duration_years(5), by = duration_quarters(1))
#> <duration<month>[21]>
#> [1] 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60
seq(duration_days(20), by = 2, length.out = 5)
#> <duration<day>[5]>
#> [1] 20 22 24 26 28