我想生成使用comprod函数忽略NA的数据框
x = data.frame(a=c(NA,1,2,3),b=c(NA,5,6,7))
> cumprod(x)
a b
1 NA NA
2 NA NA
3 NA NA
4 NA NA
我想要的结果是,
> cumprod(x)
a b
1 NA NA
2 1 5
3 2 30
4 6 210
任何简单有效的想法?
答案 0 :(得分:2)
任何乘以1的东西都会再次出现,所以:
x[] <- lapply(x, function(i) cumprod(replace(i,is.na(i),1)) * ifelse(is.na(i),NA,1) )
x
# a b
#1 NA NA
#2 1 5
#3 2 30
#4 6 210