2015-12-21 3 views
1

У меня есть список строк, для которых я должен изменить определенную подстроку от cap до lowcaps. Как я могу эффективно реализовать это в R?заменить подстроку в R

Вот Подсписок:

>head(ID) 

"1007_PM_S_AT" 
"1053_PM_AT" 
"117_PM_AT" 
"121_PM_AT"  
"1255_PM_G_AT" 
"1294_PM_AT" 

мне нужно изменить все П.М. в нижнем регистре.

+0

посмотрите на пакет 'stringr'. 'str_locate' может помочь. – MaxPD

+0

Я, но знаете ли вы однострочное решение для этого? –

+0

Я уверен. Но мне нужно знать, что вы пробовали? – MaxPD

ответ

6

Один из вариантов, было бы обернуть tolower() в sub() вызова

R> test <- c("1007_PM_S_AT", "1053_PM_AT", "117_PM_AT", "121_PM_AT", "1255_PM_G_AT", "1294_PM_AT") 
R> sub("pm", "PM", tolower(test)) 
[1] "1007_PM_s_at" "1053_PM_at" "117_PM_at" "121_PM_at" "1255_PM_g_at" "1294_PM_at" 

Другой вариант (возможно, не так хорошо здесь), который может быть полезен для использования функции замены regmatches<-.

matches <- gregexpr('(?<=PM)(.+)', test, perl=TRUE)    # match the string after PM 
regmatches(test, matches) <- tolower(regmatches(test, matches)) # replace with lower case 
+0

Приветствия! Спасибо за то, что подумал с другого направления. Я был так расстроен из-за этой глупой проблемы, что я отбросил логику. –

+0

Учитывая, что я делаю то же самое несколько раз в день, я полностью понимаю – Stedy

Смежные вопросы