У меня есть вектор целых чисел, и я хочу отфильтровать его, удалив «изолированные» компоненты.Что я имею в виду под «изолированным»?те компоненты, которые не лежат в 4-окрестности другого компонента.Компоненты в векторе упорядочены все чаще, и повторений нет.
Например, если у меня есть c(1,2,3,8,15,16,17)
, тогда мне нужно исключить 8
, поскольку он не находится в 4-окрестности другого элемента.
Я пытался применить
for (p in 1:(length(index)-2))
if((index[p+1]>3+index[p])&(index[p+2]>3+index[p+1])){index[p+1]<-0}
index<-index[index!=0]
, где index
- мой интересующий вектор, но есть некоторая проблема с логическим условием.Не могли бы вы дать мне несколько советов?
Заранее спасибо.