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

У меня есть список типа

[[1]]
[1] 4 2 3 5 8 0
[[2]]
[1] 11 -4 6 8 10
[[3]]
[1] 0 -6 9 12 

Я хочу, чтобы первые 3-я элементы были удалены из i-й записи списка:

[[1]]
[1] 3 5 8 0
[[2]]
[1] -4 6 8 10
[[3]]
[1] 0 -6 9 12 

Соответствующий вопрос был опубликован здесь , однако один и тот же элемент должен быть удален из каждого элемента списка.

Ответы [ 3 ]

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

Пусть i, j, k - индекс первого элемента в массивах a [], b [], c [] соответственно.Вы убираете min (a [i], b [j], c [k]) и увеличиваете i или j или k в зависимости от того, где был минимум.Повторите это столько раз, сколько чисел вы хотите удалить, в случае 3. 3. 1001 *

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

Вот еще одна идея,

lapply(l1, function(i)tail(i, min(lengths(l1))))
#[[1]]
#[1] 3 5 8 0

#[[2]]
#[1] -4  6  8 10

#[[3]]
#[1]  0 -6  9 12

ДАННЫЕ:

dput(l1)
list(c(4, 2, 3, 5, 8, 0), c(11, -4, 6, 8, 10), c(0, -6, 9, 12
))
0 голосов
/ 20 декабря 2018

Используя lapply, мы можем удалить первые i элементы из каждого списка, и если 3-x меньше 0, то мы возвращаем список как есть.

lapply(seq_along(lst), function(x) 
           if ((3-x) > 0) lst[[x]][-seq(3-x)] else lst[[x]])


#[[1]]
#[1] 3 5 8 0

#[[2]]
#[1] -4  6  8 10

#[[3]]
#[1]  0 -6  9 12

данные

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