包含NA值循环计算

时间:2015-12-28 07:57:25

标签: r loops na

我有一个包含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循环来说效果太慢。

你有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

由于您希望yx 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)