привязать определенные элементы списка - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть список, содержащий элементы разной длины.Я хотел бы связать вместе элементы, длина которых меньше L, и заменить отдельные короткие элементы объединенным элементом.

Например:

L = list()
for (i in 1:3) {
    L[[i]] = seq(1:i)
}

Я хотел бы объединитьэлементы 1,2 в элемент "12", содержащие цифры 1,1,2 вместо первых двух элементов.Как я могу сделать это систематически (в цикле или в векторе)?

Желаемый результат: первый элемент c (1,1,2), второй элемент c (1,2,3)

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Мы можем сделать

c(list(unlist(L[lengths(L) < 3])), L[lengths(L) >= 3])
# [[1]]
# [1] 1 1 2
#
# [[2]]
# [1] 1 2 3

Вторая часть, L[lengths(L) >= 3], содержит все достаточно длинные элементы L.Тогда L[lengths(L) < 3] - это список всех коротких элементов L, а unlist объединяет их вместе.

0 голосов
/ 12 декабря 2018

Мы получаем max length из list ('L'), получаем логический индекс, сравнивая с lengths, объединяем эти элементы, не соответствующие максимальной длине, и добавляем к другому спискуэлемент

i1 <- max(lengths(L))
i2 <- i1 != lengths(L)
c(list(Reduce(`c`, L[i2])), L[!i2])
#[[1]]
#[1] 1 1 2

#[[2]]
#[1] 1 2 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...