Как исключить набор из большого набора в R - PullRequest
0 голосов
/ 05 февраля 2019

Предположим, у меня есть набор 10 элементов.Предположим, что мой код может выбирать только 3 элементов одновременно.Затем я хотел бы выбрать другие $ 3 $ элементы, однако, без выбора уже выбранных элементов.

x <- c(4,3,5,6,-2,7,-4,10,22,-12)

Затем предположим, что мое условие состоит в том, чтобы выбрать 3 элементов, которые меньше 5.Затем

new_x <- c(4, 3, -2)

Затем я хотел бы выбрать другие элементы 3, которые меньше 5, но не были выбраны в первый раз.Если элемента 3 нет, то третий элемент должен иметь значение ноль.

Следовательно,

new_xx <- c(-4,-12,0)

Любая помощь, пожалуйста?

1 Ответ

0 голосов
/ 05 февраля 2019

Вот опция, использующая split

f <- function(x, max = 5, n = 3) {
    x <- x[x < max]
    ret <- split(x, rep(1:(length(x) / n + 1), each = n)[1:length(x)])
    lapply(ret, function(w) replace(rep(0, n), 1:length(w), w))
}

f(x)
#$`1`
#[1]  4  3 -2
#
#$`2`
#[1]  -4 -12   0

Объяснение: Мы определяем пользовательскую функцию, которая сначала выбирает записи <5, затем разбивает результирующий вектор на куски длины 3 и сохраняет результат в<code>list и, наконец, 0-пэды тех list элементов, которые являются векторами длины <3. </p>

Пример данных

x <- c(4,3,5,6,-2,7,-4,10,22,-12)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...