Вот подход с использованием sub
, который, кажется, работает:
test.string <- "I am:% a test$ to& see if* your# fun/ction works o\r not"
gsub("[A-Za-z]*[^A-Za-z ]\\S*\\s*", "", test.string)
[1] "I a see works not"
Этот подход заключается в использовании следующего шаблона регулярных выражений:
[A-Za-z]* match a leading letter zero or more times
[^A-Za-z ] then match a symbol once (not a space character or a letter)
\\S* followed by any other non whitespace character
\\s* followed by any amount of whitespace
Затем мы просто заменим напустая строка, чтобы удалить слова, содержащие один или несколько символов.