我有一个包含Error
的数字序列。至少有两个连续值不是NA
,如下所示:
NA
我尝试这样做
x
# [1] 2 4 NA NA 1 NA 1 2 NA NA
有y[1]=1, y[2]=y[1]*(x[2]/x[1])
NA
此功能不起作用。此外,我尝试将该函数应用于按列的大矩阵,它对于g has循环来说效果太慢。
你有更好的方法吗?
答案 0 :(得分:0)
由于您希望y
在x
s的比例丢失时保持不变,您可以计算x
s的比率,然后用{填写缺失值{1}}并使用函数1
保持正确的mulitplying。没有cumprod()
循环,我猜这会比你正在使用的函数更快。
for
结果看起来像这样
myfun <- function(x) {
# calculate the ratio of x[i] to x[i-1]
xrat <- x[-1]/x[-length(x)]
# when the ratio is missing, define it as 1
xrat[is.na(xrat)] <- 1
# define y
y <- c(1, cumprod(xrat))
return(y)
}
# your x
x <- c(2, 4, NA, NA, 1, NA, 1, 2, NA, NA)
y <- myfun(x)