Просто нужно сбежать |
, т.е. \\|
:
string <- c("cat|~||~||~||~|", "mouse|~||~|", "dogg")
sub("\\|~.+$", "", string)
[1] "cat" "mouse" "dogg"
В качестве альтернативы вы можете указать fixed = TRUE
:
gsub("|~|", "", string, fixed = TRUE)
[1] "cat" "mouse" "dogg"