2016-10-29 3 views
2

У меня есть текст на немецком языке, и я хочу, чтобы заменить все умляуты (А, А, U, U, O, O) с аей, О.Е., уй и т.д.Замена всех умляуты одновременно в R (с использованием регулярных выражений)

я могу это сделать по отдельности (при сохранении каждой замены в новый файл):

gsub(pattern = '[ä]', replacement = "ae",text) 
gsub(pattern = '[ü]', replacement = "ue",text) 
gsub(pattern = '[ö]', replacement = "oe",text) 

Но я могу сделать это в одной команде (в том числе с заменой заглавных букв Ae, Ым и Ue, и т.д.)?

Могу ли я сделать это с помощью регулярных выражений?

+0

Вы, вероятно, не может сделать фактическую работу в одной строке, но вы можете определить функцию, которая делает только это ... –

+0

@Rhymoid к примеру? –

+0

Вы можете использовать 'stringr :: str_replace_all', чтобы заменить их все сразу, если вы передадите им именованный вектор, где имена являются шаблонами, а элементы - заменой, например. 'stringr :: str_replace_all ('üïëäö', c ('ü' = 'ue', 'ï' = 'ie', '' '=' ee ',' ä '=' ae ',' ö '=' oe ')) '(добавьте капиталы, если хотите). Тем не менее, вы можете копаться в стринги; вы можете просто удалить акценты с помощью 'stringi :: stri_trans_general ('üïëäö', 'latin-ascii')', хотя он не будет вставлять «e» s. – alistaire

ответ

1

Вы можете попробовать

# install.packages("stringi) # uncomment & run if needed 
str <- c("äöü", "ÄÖÜ") 
stringi::stri_replace_all_fixed(
    str, 
    c("ä", "ö", "ü", "Ä", "Ö", "Ü"), 
    c("ae", "oe", "ue", "Ae", "Oe", "Ue"), 
    vectorize_all = FALSE 
) 
# [1] "aeoeue" "AeOeUe" 
Смежные вопросы