2015-08-06 4 views
0

Как я могу удалить элементы, которые равны нулю формы этот список:Как удалить элементы из списка

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

+0

Вы действительно хотите получить список с вектором в нем или хотите только вектор? – Gregor

+0

Я хочу, чтобы тот же список возвращался только с нулями, удаленными – user3022875

ответ

4

Если это список с одним элементом, содержащим вектор (как в вашем примере), вы можете сделать:

d[[1]] <- d[[1]][d[[1]] != 0] 

Если список содержит несколько элементов, и вы хотите, чтобы удалить нули из каждого:

d <- lapply(d, function(x) x[x != 0]) 

(Последнее выражение также будет работать для списка с помощью только одного элемента.)

3

Что у вас есть список с вектором в нем:

# 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 ответ.

Смежные вопросы