rspecial-charactersremove-if

R - sub to remove the special character if in first position


I would like to remove the symbol "|" but only when it is at the beginning of a sentence (e.g., I want "|pediatrics" to become "pediatrics" but "pediatrics|clinical" should not be changed.

I tried

sub('[|[:alnum:]]','', "word")

which works well in the case where "|" is indeed at the beginning of the sentence, but removes the first letter when it is not present (i.e.,

sub('[|[:alnum:]]','', "|pediatrics")

returns pediatrics as desired but

sub('[|[:alnum:]]','', "pediatrics")

returns ediatrics...

Any help would be extremely valuable! Thanks in advance.


Solution

  • You can use ^ to specify start of the string and since | has a special meaning in regex, escape it with \\. With sub you may do -

    x <- c('|pediatrics', 'pediatrics|clinical')
    y <- sub('^\\|', '', x)
    y
    #[1] "pediatrics"          "pediatrics|clinical"