Replace last comma in character with “ &”












12















I have many different characters which have the following structure:



# Example
x <- "char1, char2, char3"


I want to remove the last comma of this character with " &", i.e. the desired output should look as follows:



# Desired output
"char1, char2 & char3"


How could I replace the last comma of a character with " &"?










share|improve this question


















  • 1





    It seems like there is much interest in this topic. Therefore, I have written an article which summarizes the responses of this thread: statistical-programming.com/… Thanks again for all the great responses!

    – JSP
    Feb 7 at 21:28






  • 2





    this is a string not a character, right?

    – Will Barnwell
    Feb 7 at 23:06






  • 1





    Ah, no, r calls strings characters. Confusing

    – Will Barnwell
    Feb 7 at 23:32
















12















I have many different characters which have the following structure:



# Example
x <- "char1, char2, char3"


I want to remove the last comma of this character with " &", i.e. the desired output should look as follows:



# Desired output
"char1, char2 & char3"


How could I replace the last comma of a character with " &"?










share|improve this question


















  • 1





    It seems like there is much interest in this topic. Therefore, I have written an article which summarizes the responses of this thread: statistical-programming.com/… Thanks again for all the great responses!

    – JSP
    Feb 7 at 21:28






  • 2





    this is a string not a character, right?

    – Will Barnwell
    Feb 7 at 23:06






  • 1





    Ah, no, r calls strings characters. Confusing

    – Will Barnwell
    Feb 7 at 23:32














12












12








12








I have many different characters which have the following structure:



# Example
x <- "char1, char2, char3"


I want to remove the last comma of this character with " &", i.e. the desired output should look as follows:



# Desired output
"char1, char2 & char3"


How could I replace the last comma of a character with " &"?










share|improve this question














I have many different characters which have the following structure:



# Example
x <- "char1, char2, char3"


I want to remove the last comma of this character with " &", i.e. the desired output should look as follows:



# Desired output
"char1, char2 & char3"


How could I replace the last comma of a character with " &"?







r replace character






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Feb 7 at 16:11









JSPJSP

75611020




75611020








  • 1





    It seems like there is much interest in this topic. Therefore, I have written an article which summarizes the responses of this thread: statistical-programming.com/… Thanks again for all the great responses!

    – JSP
    Feb 7 at 21:28






  • 2





    this is a string not a character, right?

    – Will Barnwell
    Feb 7 at 23:06






  • 1





    Ah, no, r calls strings characters. Confusing

    – Will Barnwell
    Feb 7 at 23:32














  • 1





    It seems like there is much interest in this topic. Therefore, I have written an article which summarizes the responses of this thread: statistical-programming.com/… Thanks again for all the great responses!

    – JSP
    Feb 7 at 21:28






  • 2





    this is a string not a character, right?

    – Will Barnwell
    Feb 7 at 23:06






  • 1





    Ah, no, r calls strings characters. Confusing

    – Will Barnwell
    Feb 7 at 23:32








1




1





It seems like there is much interest in this topic. Therefore, I have written an article which summarizes the responses of this thread: statistical-programming.com/… Thanks again for all the great responses!

– JSP
Feb 7 at 21:28





It seems like there is much interest in this topic. Therefore, I have written an article which summarizes the responses of this thread: statistical-programming.com/… Thanks again for all the great responses!

– JSP
Feb 7 at 21:28




2




2





this is a string not a character, right?

– Will Barnwell
Feb 7 at 23:06





this is a string not a character, right?

– Will Barnwell
Feb 7 at 23:06




1




1





Ah, no, r calls strings characters. Confusing

– Will Barnwell
Feb 7 at 23:32





Ah, no, r calls strings characters. Confusing

– Will Barnwell
Feb 7 at 23:32












4 Answers
4






active

oldest

votes


















13














One option is stri_replace_last from stringi



library(stringi)
stri_replace_last(x, fixed = ',', ' &')
#[1] "char1, char2 & char3"





share|improve this answer































    8














    You can use sub :



    sub(",([^,]*)$"," &\1", x)
    # [1] "char1, char2 & char3"





    share|improve this answer































      3














      You could split and unsplit it.



      u <- unlist(strsplit(x, ""))
      u[tail(grep(",", u), 1)] <- " &"
      paste0(u, collapse="")
      # [1] "char1, char2 & char3"





      share|improve this answer































        3














        We can also use str_locate_all with str_sub:



        library(stringr)
        pos <- str_locate_all(x, ',')[[1]][2, ]
        str_sub(x, pos[1], pos[2]) <- " &"

        # [1] "char1, char2 & char3"





        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%2f54577567%2freplace-last-comma-in-character-with%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          4 Answers
          4






          active

          oldest

          votes








          4 Answers
          4






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          13














          One option is stri_replace_last from stringi



          library(stringi)
          stri_replace_last(x, fixed = ',', ' &')
          #[1] "char1, char2 & char3"





          share|improve this answer




























            13














            One option is stri_replace_last from stringi



            library(stringi)
            stri_replace_last(x, fixed = ',', ' &')
            #[1] "char1, char2 & char3"





            share|improve this answer


























              13












              13








              13







              One option is stri_replace_last from stringi



              library(stringi)
              stri_replace_last(x, fixed = ',', ' &')
              #[1] "char1, char2 & char3"





              share|improve this answer













              One option is stri_replace_last from stringi



              library(stringi)
              stri_replace_last(x, fixed = ',', ' &')
              #[1] "char1, char2 & char3"






              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered Feb 7 at 16:13









              akrunakrun

              418k13206281




              418k13206281

























                  8














                  You can use sub :



                  sub(",([^,]*)$"," &\1", x)
                  # [1] "char1, char2 & char3"





                  share|improve this answer




























                    8














                    You can use sub :



                    sub(",([^,]*)$"," &\1", x)
                    # [1] "char1, char2 & char3"





                    share|improve this answer


























                      8












                      8








                      8







                      You can use sub :



                      sub(",([^,]*)$"," &\1", x)
                      # [1] "char1, char2 & char3"





                      share|improve this answer













                      You can use sub :



                      sub(",([^,]*)$"," &\1", x)
                      # [1] "char1, char2 & char3"






                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Feb 7 at 16:29









                      Moody_MudskipperMoody_Mudskipper

                      24.4k33568




                      24.4k33568























                          3














                          You could split and unsplit it.



                          u <- unlist(strsplit(x, ""))
                          u[tail(grep(",", u), 1)] <- " &"
                          paste0(u, collapse="")
                          # [1] "char1, char2 & char3"





                          share|improve this answer




























                            3














                            You could split and unsplit it.



                            u <- unlist(strsplit(x, ""))
                            u[tail(grep(",", u), 1)] <- " &"
                            paste0(u, collapse="")
                            # [1] "char1, char2 & char3"





                            share|improve this answer


























                              3












                              3








                              3







                              You could split and unsplit it.



                              u <- unlist(strsplit(x, ""))
                              u[tail(grep(",", u), 1)] <- " &"
                              paste0(u, collapse="")
                              # [1] "char1, char2 & char3"





                              share|improve this answer













                              You could split and unsplit it.



                              u <- unlist(strsplit(x, ""))
                              u[tail(grep(",", u), 1)] <- " &"
                              paste0(u, collapse="")
                              # [1] "char1, char2 & char3"






                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered Feb 7 at 16:22









                              jay.sfjay.sf

                              6,56231841




                              6,56231841























                                  3














                                  We can also use str_locate_all with str_sub:



                                  library(stringr)
                                  pos <- str_locate_all(x, ',')[[1]][2, ]
                                  str_sub(x, pos[1], pos[2]) <- " &"

                                  # [1] "char1, char2 & char3"





                                  share|improve this answer




























                                    3














                                    We can also use str_locate_all with str_sub:



                                    library(stringr)
                                    pos <- str_locate_all(x, ',')[[1]][2, ]
                                    str_sub(x, pos[1], pos[2]) <- " &"

                                    # [1] "char1, char2 & char3"





                                    share|improve this answer


























                                      3












                                      3








                                      3







                                      We can also use str_locate_all with str_sub:



                                      library(stringr)
                                      pos <- str_locate_all(x, ',')[[1]][2, ]
                                      str_sub(x, pos[1], pos[2]) <- " &"

                                      # [1] "char1, char2 & char3"





                                      share|improve this answer













                                      We can also use str_locate_all with str_sub:



                                      library(stringr)
                                      pos <- str_locate_all(x, ',')[[1]][2, ]
                                      str_sub(x, pos[1], pos[2]) <- " &"

                                      # [1] "char1, char2 & char3"






                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered Feb 7 at 16:32









                                      avid_useRavid_useR

                                      13.3k41933




                                      13.3k41933






























                                          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%2f54577567%2freplace-last-comma-in-character-with%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

                                          Human spaceflight

                                          Can not write log (Is /dev/pts mounted?) - openpty in Ubuntu-on-Windows?

                                          張江高科駅