如何从此列表中删除零的元素:
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 :(得分: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答案。