У меня есть несколько машин, которые начинают работать одновременно. У меня есть вектор чисел vec_num
, показывающий, сколько единиц времени работала каждая машина с момента ее запуска (нулевых значений нет).
Я пытаюсь найти способ эффективно рассчитать, сколько машин было запущено во времени, создав вектор length(max(vec_num))
, где каждый элемент представляет единицу времени, а его значение представляет, сколько машин работало. .
# For instance, take
vec_num <- c(1,1,4,3,1,10)
Идеальным выходным сигналом был бы вектор, сгенерированный из:
vec_num <- lapply(vec_num, function(x) {
vec_zero <- rep(0, max(vec_num))
vec_zero[1:x] <- 1
return(vec_zero)
})
Reduce(`+`, vec_num)
>> 6 3 3 2 1 1 1 1 1 1
Когда 6 машин работали в первый блок времени, 3 машины работали во втором и третий, 2 на четвертом, и только одна машина работала на 10. Представьте себе первый индекс, представляющий, сколько машин было запущено в первую единицу времени, второй индекс - вторая единица времени, третий индекс - третий, и т. д. четвертый.
Однако этот способ неэффективен в вычислительном отношении и памяти и не масштабируется, когда сотни тысяч машин работают в течение нескольких тысяч единиц времени. Есть ли более эффективный способ go об этом вычислении?