Как вставлять элементы в вектор через равные промежутки времени в R - PullRequest
1 голос
/ 09 марта 2020

Существует ли какой-либо альтернативный метод R для решения проблемы, описанной здесь: Как вставлять элементы в вектор через равные промежутки времени в Matlab

А именно, из вектора x <- c(1,2,3,4,5,6,7,8,9,10,11,12), I хочу получить вектор y, заданный

y     <- c(0, 1, 2, 3,
           0, 4, 5, 6,
           0, 7, 8, 9,
           0,10,11,12)

... Я нашел следующую страницу, ... возможно, дубликат

R: вставить элементы в вектор (a вариация)


Редактировать Я слегка изменил ответ @ jay.sf. Я думаю, что interval.length - это не длина нашего интуитивного интервала.

    x <- 1:16
    interval.length <- 2
    co_interval.length <- length(x)/interval.length
    as.vector(t(cbind(0, matrix(x, co_interval.length, byrow=T))))

[1]  0  1  2  0  3  4  0  5  6  0  7  8  0  9 10  0 11 12  0 13 14  0 15 16

Ответы [ 2 ]

3 голосов
/ 09 марта 2020

Вы можете сделать матрицу и привести ее к вектору.

interval.length <- 4
as.vector(t(cbind(0, matrix(x, interval.length, byrow=T))))
# [1]  0  1  2  3  0  4  5  6  0  7  8  9  0 10 11 12
2 голосов
/ 09 марта 2020

Другой способ - использовать арифметическую индексацию:

y <- numeric(16)
y[x + 1 + (x - 1) %/% 3] <- x
y
#> [1]  0  1  2  3  0  4  5  6  0  7  8  9  0 10 11 12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...