У меня есть числовой вектор x длины N и хотел бы создать вектор внутри установленных сумм всех следующих наборов: любая возможная комбинация x элементов с не более M элементов в каждой комбинации. Я собрал медленный итеративный подход; то, что я ищу здесь, является способом, не использующим никаких циклов.R expand.grid с ограничениями строки
Рассмотрим подход Я принимаю, в следующем примере с N = 5 и М = 4
M <- 4
x <- 11:15
y <- as.matrix(expand.grid(rep(list(0:1), length(x))))
result <- y[rowSums(y) <= M, ] %*% x
Однако, как N становится большим (более 22 для меня), выход становится expand.grid слишком большой и дает ошибку (замените x выше на x < - 11:55, чтобы это наблюдать). В идеале была бы функция expand.grid, которая допускает ограничения на строки перед построением полной матрицы, которая (по крайней мере, для того, что я хочу) будет поддерживать размер матрицы в пределах памяти.
Есть ли способ достичь этого, не вызывая проблем при больших N?
Являются ли данные токена «11: 15» (для оптимизации @ EtienneMoerman) или типичными реальными данными? Каково применение этого? Это редкое обращение с мощностью 2^45 – smci