У меня вектор ровно 5 элементов.Элементы вектора содержат числа, которые больше 100 и меньше 100. Эти элементы представляют количество точек в определенной области в пространстве.
Я хотел бы найти общий способ объединения элементов, которыеменьше, чем 100, со своими соседями.
Правила следующие:
Я могу присоединиться только к соседям (2 является соседом 1, 3 и 1 являютсяСоседи 2, 4 - единственный сосед 5 ...).
Я не могу объединить более 3 элементов.Так, например, если все элементы 1, 2, 3, 4, 4 вектора меньше, чем 100, я могу объединить между собой только 1,2,3 или 2,3,4 (а не с 5, потому что это снова будет большечем 3).
если элементы для агрегирования - 1,2,4, я могу сделать агрегацию 1 и 2 с 3 и 5 с 4.
Я пытаюсь написать общую функцию для этого, но на данный момент я сгенерировал все возможные комбинации и сказал R, что делать в каждом случае (как я делал выше),что долго и утомительно.
например:
v = c(100, 30, 50, 100, 20)
, поэтому в этом случае мой результат будет:
v1 = c(130, 170)
от агрегирующих элементов (1 + 2, 3 + 4 + 5).
В общем случае может быть несколько способов агрегирования, в зависимости от соседей с каждой стороны.
Есть какие-нибудь креативные идеи, как аккуратно это написать?