Подставляя одиночные символы или символы, разделенные запятой - PullRequest
1 голос
/ 17 апреля 2019

У меня есть следующие данные, и я хочу заменить только одиночные символы.

A,Apple
A

Я хочу создать вывод, такой что

Banana,Apple
Banana

Другими словами, я хочу заменитьвсе, что имеет А, или просто А с бананом.Но если появляется другое слово, начинающееся с А., я хочу игнорировать это.

Я пытался

gsub("A", "Banana"),
gsub("A[^,;]","Banana"),

Но это не сработает для первого примера, вывод, который я получаю, -

Banana,Bpple

Есть идеи, как мне этого добиться?Спасибо!

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Решением без регулярных выражений может быть разделение строки на запятую (,), изменение значения на «Банан», если оно равно «А»

sapply(strsplit(x, ","), function(x) toString(ifelse(x == "A","banana", x)))
#[1] "banana, Apple" "banana"

Данные

x <- c("A,Apple", "A")
1 голос
/ 17 апреля 2019

Если значение всегда заключено в пунктуацию или начало / конец строки:

text = "A,Apple\nA\nAvocado"
text2 = gsub("(\\b)A(\\b)", "\\1Bananna\\2", text, TRUE, TRUE)
cat(text2)

Это фиксирует пунктуацию, если таковая существует, вокруг «А», а затем возвращает их обратно, используя обратные ссылки \1 и \2. PCRE используются, поэтому мы можем использовать \b соответствие границы слова.

Выход:

Bananna,Apple
Bananna
Avocado
...