如何从列表中删除元素

时间:2015-08-06 23:17:06

标签: r subset

如何从此列表中删除零的元素:

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

2 个答案:

答案 0 :(得分:4)

如果它是包含向量的单个元素的列表(如您的示例所示),则可以执行以下操作:

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

如果列表包含多个元素,并且您想从每个元素中删除零:

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

(后一个表达式也适用于只有一个元素的列表。)

答案 1 :(得分: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答案。