我有一个看起来像这样的向量:
x <- c(0, runif(3), 0, 0, runif(5), 0, runif(2), rep(0, 10))
我想删除向量末尾的所有零,但不删除出现在非零值之间的零。最好的方法是什么?
答案 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))))]