gpt4 book ai didi

用从邻居计算的值替换数字向量中的 NA

转载 作者:行者123 更新时间:2023-12-05 09:22:24 25 4
gpt4 key购买 nike

我正在尝试编写一个 replacena() 函数,它将给定数值向量中的每个缺失值替换为其前后元素的算术平均值 .

例如,如果给出c(5, NA, 6, 2, 3, 5, 6, 4, NA, 2, NA, 5),那么结果应该是c(5, 5.5, 6, 2, 3, 5, 6, 4, 3, 2, 3.5, 5)

我正在寻找一些优雅的解决方案,可能带有应用函数(没有控制流结构),但我没有想出任何可行的方法。我不太确定如何访问 lambda 函数 (x) 中的上一个和下一个元素。

replacena <- function(l)
{
stopifnot(is.numeric(l))
sapply(l[is.na(l)], function(x){ l[x] <- mean( c(l[-1:0], l[0:1]) ) } )
}

函数输入:

replacena(c(5, NA, 6, 2, 3, 5, 6, 4, NA, 2, NA, 5))

预期输出

c(5, 5.5, 6, 2, 3, 5, 6, 4, 3, 2, 3.5, 5)

有什么想法吗?

最佳答案

尝试

library(zoo)
na.approx(v1)
[1] 5.0 5.5 6.0 2.0 3.0 5.0 6.0 4.0 3.0 2.0 3.5 5.0

数据

v1 <- c(5, NA, 6, 2, 3, 5, 6, 4, NA, 2, NA, 5)

关于用从邻居计算的值替换数字向量中的 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754745/

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