Как удалить + (плюс) из строки в R?

Скажем, я использую gsub и хочу удалить следующий знак (=,+,-) из строки и заменить его символом подчеркивания.

Может кто-нибудь описать, что происходит, когда я пытаюсь использовать gsub со знаком плюс (+).

test<- "sandwich=bread-mustard+ketchup"
# [1] "sandwich=bread-mustard+ketchup"

test<-gsub("-","_",test)
# [1] "sandwich=bread_mustard+ketchup"

test<-gsub("=","_",test)
# [1] "sandwich_bread_mustard+ketchup"

test<-gsub("+","_",test)
#[1] "_s_a_n_d_w_i_c_h___b_r_e_a_d___m_u_s_t_a_r_d_+_k_e_t_c_h_u_p_"

person Jonathan    schedule 04.03.2016    source источник
comment
Вы можете установить fixed = TRUE или экранировать +.   -  person Jota    schedule 05.03.2016
comment
отлично, спасибо все получилось!!   -  person Jonathan    schedule 05.03.2016
comment
На мой взгляд, R — слабая платформа для регулярных выражений. Если большая часть вашей работы относится к этому типу, стоит изучить инструменты регулярных выражений bash и/или Perl.   -  person Novice    schedule 05.03.2016


Ответы (3)


Пытаться

test<- "sandwich=bread-mustard+ketchup"
test<-gsub("\\+","_",test)
test
[1] "sandwich=bread-mustard_ketchup"

+ — специальный символ. Вам нужно убежать от него. Так же, как, например, .. Если вы погуглите regex или регулярные выражения, то найдете соответствующие списки специальных символов. Например, здесь + обозначает 1 or more of previous expression. Дополнительную информацию о специальных символах, регулярных выражениях и R можно найти здесь или здесь.

В более общем плане приведенный выше код можно было бы написать более эффективно, используя:

 test<- "sandwich=bread-mustard+ketchup"
 test<-gsub("[-|=|\\+]","_",test)
 test
 [1] "sandwich_bread_mustard_ketchup"

Здесь я использовал конструкцию, которая в основном может быть прочитана как [either this or that or something else], где | соответствует or.

person coffeinjunky    schedule 04.03.2016

test<-gsub("+","_",test,fixed = TRUE)

кредит для Джота

person Jonathan    schedule 04.03.2016
comment
Это также быстрее, чем использование \\+ без fixed = TRUE. - person Rich Scriven; 08.03.2016

Я тоже застрял. следующий код работал для меня.

test<- "sandwich=bread-mustard+ketchup"
test<-gsub("\\+","_",test)
test
[1] "sandwich=bread-mustard_ketchup"

Однако однажды это не сработало. Я попытался использовать решение Яна . Это сработало.

person user11301776    schedule 02.04.2019