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

How is this property called for mod?

Does it take energy to move something in a circle?

How can I prevent an oracle who can see into the past from knowing everything that has happened?

Single-row INSERT...SELECT much slower than separate SELECT

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

Is there any danger of my neighbor having my wife's signature?

Why do neural networks need so many examples to perform?

Is it really OK to use "because of"?

What does an unprocessed RAW file look like?

Modern Algebraic Geometry and Analytic Number Theory

Can me and my friend spend the summer in Canada (6 weeks) at 16 years old without an adult?

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

Minimum Viable Product for RTS game?

Coworker asking me to not bring cakes due to self control issue. What should I do?

Count repetitions of an array

How do I avoid the "chosen hero" feeling?

Renting a 2CV in France

How bad is a Computer Science course that doesn't teach Design Patterns?

Plausible reason for gold-digging ant

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

How to deal with an underperforming subordinate?

How can I handle players killing my NPC outside of combat?

Context html export bibliography

Remove isolated elements of a vector



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













10















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





























    10















    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



























      10












      10








      10








      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 4 hours ago







      Ramiro Scorolli

















      asked 4 hours ago









      Ramiro ScorolliRamiro Scorolli

      1748




      1748
























          2 Answers
          2






          active

          oldest

          votes


















          6














          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

































            3














            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
























            • Neat, but since the vector is assumed to be ordered, you can even remove the abs :)

              – nate
              12 mins ago











            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









            6














            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






























              6














              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




























                6












                6








                6







                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 4 hours ago

























                answered 4 hours ago









                SotosSotos

                30.1k51640




                30.1k51640

























                    3














                    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
























                    • Neat, but since the vector is assumed to be ordered, you can even remove the abs :)

                      – nate
                      12 mins ago
















                    3














                    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
























                    • Neat, but since the vector is assumed to be ordered, you can even remove the abs :)

                      – nate
                      12 mins ago














                    3












                    3








                    3







                    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 4 hours ago









                    ClemsangClemsang

                    32429




                    32429













                    • Neat, but since the vector is assumed to be ordered, you can even remove the abs :)

                      – nate
                      12 mins ago



















                    • Neat, but since the vector is assumed to be ordered, you can even remove the abs :)

                      – nate
                      12 mins ago

















                    Neat, but since the vector is assumed to be ordered, you can even remove the abs :)

                    – nate
                    12 mins ago





                    Neat, but since the vector is assumed to be ordered, you can even remove the abs :)

                    – nate
                    12 mins ago


















                    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

                    Paper upload error, “Upload failed: The top margin is 0.715 in on page 3, which is below the required...

                    Emraan Hashmi Filmografia | Linki zewnętrzne | Menu nawigacyjneGulshan GroverGulshan...

                    How can I write this formula?newline and italics added with leqWhy does widehat behave differently if I...