Другой вариант:
df = data.frame(c(0,0),c(0,0),c(0,1),c(1,0),c(0,0),c(1,0),c(0,1),c(1,0),c(1,0),c(0,0),c(0,0))
y <- c(0.95, 0.6, rep(0.4, ncol(df) - 2))
t(apply(df, 1L, function(x) {
with(rle(x), {
unlist(mapply(function(v, l) if(!is.na(v) && v==0L) y[seq.int(l)] else rep(v, l), values, lengths))
})
}))
Выход:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 0.95 0.6 0.40 1.00 0.95 1.0 0.95 1.00 1.0 0.95 0.6
[2,] 0.95 0.6 1.00 0.95 0.60 0.4 1.00 0.95 0.6 0.40 0.4
[3,] NA NA 0.95 0.60 1.00 1.0 0.95 0.60 0.4 1.00 1.0