Remove isolated elements of a vectorHow to access the last value in a vector?Concatenating two...

How can find the 2D Voronoi cell area distribution?

How to not let the Identify spell spoil everything?

Why didn't Tom Riddle take the presence of Fawkes and the Sorting Hat as more of a threat?

Sensor logger for Raspberry Pi in a stratospheric probe

Writing dialogues for characters whose first language is not English

How can I deduce the power of a capacitor from its datasheet?

Where does documentation like business and software requirement spec docs fit in an agile project?

What is a good reason for every spaceship to carry gun on board?

Why does alert(0.-5) print -5?

What would be some possible ways of escaping higher gravity planets?

Was there a pre-determined arrangement for the division of Germany in case it surrendered before any Soviet forces entered its territory?

How do you get out of your own psychology to write characters?

I have trouble understanding this fallacy: "If A, then B. Therefore if not-B, then not-A."

Remove isolated elements of a vector

What is a good way to explain how a character can produce flames from their body?

Why are mages sometimes played bot instead of traditional ADCs?

How to align the top of the text with the top of a figure produced by tikz in minipage

why typing a variable (or expression) prints the value to stdout?

How do I avoid the "chosen hero" feeling?

Boss asked me to sign a resignation paper without a date on it along with my new contract

Possible issue with my W4 and tax return

Does it take energy to move something in a circle?

Create linguistic diagram (in TikZ?)

How long has this character been impersonating a Starfleet Officer?



Remove isolated elements of a vector


How to access the last value in a vector?Concatenating two std::vectorsHow to find out if an item is present in a std::vector?How do I erase an element from std::vector<> by index?Test if a vector contains a given elementWhy is Java Vector (and Stack) class considered obsolete or deprecated?Counting the number of elements with the values of x in a vectorWhat is the easiest way to initialize a std::vector with hardcoded elements?Appending a vector to a vectorReshaping vector with indices in python













6















I have a vector of integers and I want to filter it by eliminating the components that are "isolated".
What do I mean by "isolated"? those components that does not lie in an 4-neighbourhood of other component.
The components in the vector are ordered increasingly, and there are no repetitions.



For example if I have c(1,2,3,8,15,16,17) then I need to eliminate 8 because is not in a 4-neighbourhood of other element.



I've tried applying



   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]


where index is my vector of interest, but there's some problem with the logical condition.
Could you please give me some hints?



Thanks in advance.










share|improve this question





























    6















    I have a vector of integers and I want to filter it by eliminating the components that are "isolated".
    What do I mean by "isolated"? those components that does not lie in an 4-neighbourhood of other component.
    The components in the vector are ordered increasingly, and there are no repetitions.



    For example if I have c(1,2,3,8,15,16,17) then I need to eliminate 8 because is not in a 4-neighbourhood of other element.



    I've tried applying



       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]


    where index is my vector of interest, but there's some problem with the logical condition.
    Could you please give me some hints?



    Thanks in advance.










    share|improve this question



























      6












      6








      6








      I have a vector of integers and I want to filter it by eliminating the components that are "isolated".
      What do I mean by "isolated"? those components that does not lie in an 4-neighbourhood of other component.
      The components in the vector are ordered increasingly, and there are no repetitions.



      For example if I have c(1,2,3,8,15,16,17) then I need to eliminate 8 because is not in a 4-neighbourhood of other element.



      I've tried applying



         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]


      where index is my vector of interest, but there's some problem with the logical condition.
      Could you please give me some hints?



      Thanks in advance.










      share|improve this question
















      I have a vector of integers and I want to filter it by eliminating the components that are "isolated".
      What do I mean by "isolated"? those components that does not lie in an 4-neighbourhood of other component.
      The components in the vector are ordered increasingly, and there are no repetitions.



      For example if I have c(1,2,3,8,15,16,17) then I need to eliminate 8 because is not in a 4-neighbourhood of other element.



      I've tried applying



         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]


      where index is my vector of interest, but there's some problem with the logical condition.
      Could you please give me some hints?



      Thanks in advance.







      r if-statement vector






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 46 mins ago







      Ramiro Scorolli

















      asked 1 hour ago









      Ramiro ScorolliRamiro Scorolli

      1547




      1547
























          2 Answers
          2






          active

          oldest

          votes


















          4














          You can achieve it with a combination of outer and colSums, i.e.



          x[colSums(abs(outer(x, x, `-`)) >= 4) == length(x)-1]
          #[1] 8


          To eliminate the values, we can do,



          i1 <- colSums(outer(x, x, FUN = function(i, j) abs(i - j) >= 4)) == length(x) - 1
          x[!i1]
          #[1] 1 2 3 15 16 17


          where,



          x <- c(1,2,3,8,15,16,17)





          share|improve this answer

































            2














            We keep values where preceding or next difference is lower or equal to 4 :



            v <- c(1,2,3,8,15,16,17)
            v[c(FALSE, abs(diff(v)) <= 4) | c(abs(diff(v)) <= 4, FALSE)]





            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54862344%2fremove-isolated-elements-of-a-vector%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              4














              You can achieve it with a combination of outer and colSums, i.e.



              x[colSums(abs(outer(x, x, `-`)) >= 4) == length(x)-1]
              #[1] 8


              To eliminate the values, we can do,



              i1 <- colSums(outer(x, x, FUN = function(i, j) abs(i - j) >= 4)) == length(x) - 1
              x[!i1]
              #[1] 1 2 3 15 16 17


              where,



              x <- c(1,2,3,8,15,16,17)





              share|improve this answer






























                4














                You can achieve it with a combination of outer and colSums, i.e.



                x[colSums(abs(outer(x, x, `-`)) >= 4) == length(x)-1]
                #[1] 8


                To eliminate the values, we can do,



                i1 <- colSums(outer(x, x, FUN = function(i, j) abs(i - j) >= 4)) == length(x) - 1
                x[!i1]
                #[1] 1 2 3 15 16 17


                where,



                x <- c(1,2,3,8,15,16,17)





                share|improve this answer




























                  4












                  4








                  4







                  You can achieve it with a combination of outer and colSums, i.e.



                  x[colSums(abs(outer(x, x, `-`)) >= 4) == length(x)-1]
                  #[1] 8


                  To eliminate the values, we can do,



                  i1 <- colSums(outer(x, x, FUN = function(i, j) abs(i - j) >= 4)) == length(x) - 1
                  x[!i1]
                  #[1] 1 2 3 15 16 17


                  where,



                  x <- c(1,2,3,8,15,16,17)





                  share|improve this answer















                  You can achieve it with a combination of outer and colSums, i.e.



                  x[colSums(abs(outer(x, x, `-`)) >= 4) == length(x)-1]
                  #[1] 8


                  To eliminate the values, we can do,



                  i1 <- colSums(outer(x, x, FUN = function(i, j) abs(i - j) >= 4)) == length(x) - 1
                  x[!i1]
                  #[1] 1 2 3 15 16 17


                  where,



                  x <- c(1,2,3,8,15,16,17)






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited 46 mins ago

























                  answered 51 mins ago









                  SotosSotos

                  30k51640




                  30k51640

























                      2














                      We keep values where preceding or next difference is lower or equal to 4 :



                      v <- c(1,2,3,8,15,16,17)
                      v[c(FALSE, abs(diff(v)) <= 4) | c(abs(diff(v)) <= 4, FALSE)]





                      share|improve this answer




























                        2














                        We keep values where preceding or next difference is lower or equal to 4 :



                        v <- c(1,2,3,8,15,16,17)
                        v[c(FALSE, abs(diff(v)) <= 4) | c(abs(diff(v)) <= 4, FALSE)]





                        share|improve this answer


























                          2












                          2








                          2







                          We keep values where preceding or next difference is lower or equal to 4 :



                          v <- c(1,2,3,8,15,16,17)
                          v[c(FALSE, abs(diff(v)) <= 4) | c(abs(diff(v)) <= 4, FALSE)]





                          share|improve this answer













                          We keep values where preceding or next difference is lower or equal to 4 :



                          v <- c(1,2,3,8,15,16,17)
                          v[c(FALSE, abs(diff(v)) <= 4) | c(abs(diff(v)) <= 4, FALSE)]






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 42 mins ago









                          ClemsangClemsang

                          31429




                          31429






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54862344%2fremove-isolated-elements-of-a-vector%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Szabolcs (Ungheria) Altri progetti | Menu di navigazione48°10′14.56″N 21°29′33.14″E /...

                              Discografia di Klaus Schulze Indice Album in studio | Album dal vivo | Singoli | Antologie | Colonne...

                              How to make inet_server_addr() return localhost in spite of ::1/128RETURN NEXT in Postgres FunctionConnect to...