gpt4 book ai didi

r - 在向量内传播数据

转载 作者:行者123 更新时间:2023-12-02 13:40:24 25 4
gpt4 key购买 nike

我正在学习 R,我很好奇......我需要一个可以执行此操作的函数:

> fillInTheBlanks(c(1, NA, NA, 2, 3, NA, 4))
[1] 1 1 1 2 3 3 4
> fillInTheBlanks(c(1, 2, 3, 4))
[1] 1 2 3 4

我制作了这个...但我怀疑还有一种更 R 的方法可以做到这一点。

fillInTheBlanks <- function(v) {
## replace each NA with the latest preceding available value

orig <- v
result <- v
for(i in 1:length(v)) {
value <- v[i]
if (!is.na(value))
result[i:length(v)] <- value
}
return(result)
}

最佳答案

zoo有一个函数na.locf():

R> library("zoo")
R> na.locf(c(1, 2, 3, 4))
[1] 1 2 3 4
R> na.locf(c(1, NA, NA, 2, 3, NA, 4))
[1] 1 1 1 2 3 3 4

na.locf:最后一次观察结转;用于将每个“NA”替换为之前的最新非“NA”的通用函数。

查看函数na.locf.default的源代码,它不需要for循环。

关于r - 在向量内传播数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782704/

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