Как я могу удалить элементы, которые равны нулю формы этот список:Как удалить элементы из списка
d <- list(c(1, 2, 0, 6, 0, 7, 7, 9, 0, 7, 0, 0))
d[1]
, так что результат будет d[1] = 1, 2, 6, 7, 7, 9, 7
Как я могу удалить элементы, которые равны нулю формы этот список:Как удалить элементы из списка
d <- list(c(1, 2, 0, 6, 0, 7, 7, 9, 0, 7, 0, 0))
d[1]
, так что результат будет d[1] = 1, 2, 6, 7, 7, 9, 7
Если это список с одним элементом, содержащим вектор (как в вашем примере), вы можете сделать:
d[[1]] <- d[[1]][d[[1]] != 0]
Если список содержит несколько элементов, и вы хотите, чтобы удалить нули из каждого:
d <- lapply(d, function(x) x[x != 0])
(Последнее выражение также будет работать для списка с помощью только одного элемента.)
Что у вас есть список с вектором в нем:
# list( vector )
d <- list(c(1,2,0,6,0,7,7,9,0,7,0,0))
Ни один ваш «список элементы»являются 0, потому что ваш список имеет один элемент, который является длинным вектором, а не 0.
length(d)
# [1] 1
Я думаю, что вы хотите, это просто вектор:
vec <- c(1,2,0,6,0,7,7,9,0,7,0,0)
В этом случае вы можете сделать
vec <- vec[vec != 0]
vec
# [1] 1 2 6 7 7 9 7
Если вы действительно хотите список, вам нужны двойные скобки, чтобы выбрать один элемент для редактирования или использовать lapply
и функцию, как и в @jbaums ответ.
Вы действительно хотите получить список с вектором в нем или хотите только вектор? – Gregor
Я хочу, чтобы тот же список возвращался только с нулями, удаленными – user3022875