【发布时间】:2018-08-14 02:38:33
【问题描述】:
我有三个向量,coin.flips、alpha 和 beta。在这里它们被初始化:
coin.flips <- c(NA,rbinom(n = 5, size = 1, prob = 0.5))
N <- length(coin.flips)
alpha <- rep(0,length(coin.flips))
alpha[1]<-1
beta <- rep(0,length(coin.flips))
beta[1]<-1
我想根据coin.flips 的值更新alpha/beta。如果coin.flips==1 则递增alpha,否则递增beta。以下是我在基础 R 中的做法。
for(i in 2:N){
if(coin.flips[i]>0){
alpha[i] = alpha[i-1]+1
beta[i] = beta[i-1]
}
else{
alpha[i] = alpha[i-1]
beta[i] = beta[i-1]+1
}
}
我怎样才能以整洁的方式做到这一点?假设coin.flips 是 tibble 或 data.frame 的列。有没有一种简单的方法来构造新列alpha/beta,该列的增量取决于coin.flips 的值和alpha/beta 的先前值?
【问题讨论】: