wen*_*wen 0 replace numbers r sequence
我有一串数字:
n1 = c(1, 1, 0, 6, 0, 0, 10, 10, 11, 12, 0, 0, 19, 23, 0, 0)
Run Code Online (Sandbox Code Playgroud)
我需要将0与相应的数字替换为"后面"以获得,同时将0留在尾部(因为它们背后没有任何东西):
n2 = c(1, 1, 6, 6, 10, 10, 10, 10, 11, 12, 19, 19, 19, 23, 0, 0)
Run Code Online (Sandbox Code Playgroud)
我如何从n1到n2?
这似乎比我之前提到的问题要难得多:
flodel提出了一个优雅的解决方案:
n2 <- n1[cummax(seq_along(n1) * (n1 != 0))]
Run Code Online (Sandbox Code Playgroud)
但是,这个解决方案在这里不起作用; 我已经尝试但未能调整代码.
别人能想出一个优雅的解决方案吗?
提前致谢!
如果你没有NA在矢量中,你可以使用na.locf包zoo:
n1[n1==0] <- NA
n2 = na.locf(n1, na.rm=FALSE, fromLast=TRUE)
n2[is.na(n2)] <- 0
n2
## [1] 1 1 6 6 10 10 10 10 11 12 19 19 19 23 0 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |