Вот один из способов сделать это, используя apply
:
A <- data.frame(Amount = c(50, 80), Times = c(4, 2))
# Amount Times
# 1 50 4
# 2 80 2
x <- apply(A, 1, function(r) {
c(rep(r[['Amount']], r['Times']), rep(NA, max(A['Times'] - r['Times'])))
})
t(x)
# [,1] [,2] [,3] [,4]
# [1,] 50 50 50 50
# [2,] 80 80 NA NA
Вот альтернатива, которая немного менее многословна:
> do.call(rbind, lapply(mapply(rep, A$Amount, A$Times), `length<-`, max(A$Times)))
[,1] [,2] [,3] [,4]
[1,] 50 50 50 50
[2,] 80 80 NA NA