Субъект говорит, что последняя подпоследовательность - n
, но основная часть вопроса говорит, что это (n-1):n
. Я предположил (n-1):n
, но чтобы получить другое, просто измените каждый n-1
в коде на n
и каждые 2 в коде на 1.
1) lapply Предполагая, что мы хотим, чтобы 1: n, 2: n, ..., (n-1): n перебирали начальное значение каждой подпоследовательности следующим образом:
n <- 4
unlist(lapply(seq_len(n-1), seq, n))
## [1] 1 2 3 4 2 3 4 3 4
2) последовательность Другой подход заключается в преобразовании sequence(seq(n, 2))
следующим образом:
s <- sequence(seq(n, 2))
s + cumsum(s == 1) - 1
## [1] 1 2 3 4 2 3 4 3 4
3) наружный
m <- outer(seq_len(n), seq_len(n-1), ">=") * seq(n)
m[m > 0]
## [1] 1 2 3 4 2 3 4 3 4
3a) Этот вариант (3) также работает:
m <- outer(seq_len(n), seq_len(n-1), "+") - 1
m[m <= n]
## [1] 1 2 3 4 2 3 4 3 4
4) Уменьшить
f <- function(x, y) c(x, seq(y, n))
Reduce(f, 1:(n-1), c())
## [1] 1 2 3 4 2 3 4 3 4
5) Рекурсия
Recurse <- function(v) {
if (length(v) > 2) c(v, Recall(tail(v, -1))) else v
}
Recurse(1:n)
## [1] 1 2 3 4 2 3 4 3 4