最后值是零时如何修剪向量

时间:2018-10-25 09:24:53

标签: r

我有一个看起来像这样的向量:

x <- c(0, runif(3), 0, 0, runif(5), 0, runif(2), rep(0, 10))

我想删除向量末尾的所有零,但不删除出现在非零值之间的零。最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

尝试x[1 : max(which(x != 0))]

 [1] 0.0000000 0.0297684 0.6745141 0.1008348 0.0000000 0.0000000 0.3704074 0.2195432 0.1595944 0.4764559
[11] 0.5712587 0.0000000 0.4233239 0.4611238

答案 1 :(得分:2)

要仅删除右侧,请执行以下操作:

x[!!rev(cumsum(rev(x)))]
# or 
x[rev(cumsum(rev(x))) != 0]
x[as.logical(rev(cumsum(rev(x))))]