gpt4 book ai didi

r - 如何填充向量中的值?

转载 作者:行者123 更新时间:2023-12-04 11:39:48 25 4
gpt4 key购买 nike

我在 R 中有包含很多 0 和一些非零数字的向量。每个向量都以非零数字开头。

例如 <1,0,0,0,0,0,2,0,0,0,0,0,4,0,0,0>

我想将所有零设置为等于最近的非零数字。

IE。这个向量将变成 <1,1,1,1,1,1,2,2,2,2,2,2,4,4,4,4>

我需要为大约 100 个向量执行此操作,每个向量包含大约 600 万个条目。目前我正在使用 for 循环:

for(k in 1:length(vector){

if(vector[k] == 0){

vector[k] <- vector[k-1]
}
}

有没有更有效的方法来做到这一点?

谢谢!

最佳答案

一种选择是用 0 替换那些 NA ,然后使用 zoo::na.locf :

x <- c(1,0,0,0,0,0,2,0,0,0,0,0,4,0,0,0)
x[x == 0] <- NA
zoo::na.locf(x) ## you possibly need: `install.packages("zoo")`
# [1] 1 1 1 1 1 1 2 2 2 2 2 2 4 4 4 4

感谢 Richard 向我展示了如何使用 replace
zoo::na.locf(replace(x, x == 0, NA))

关于r - 如何填充向量中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41403904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com