выполнить gsub во фрейме данных с 2 столбцами

У меня есть набор данных с двумя столбцами, я хотел бы очистить свой набор данных с помощью gsub, например

Data_edited_txt2 <- gsub("(RT|via)((?:\\b\\W*@\\w+)+)", "", Data_edited_txt2$text)
Data_edited_txt2 <- gsub("@\\w+", " ", Data_edited_txt2$text)
Data_edited_txt2 <- gsub("[[:punct:]]", "", Data_edited_txt2$text) 

Я получаю сообщение об ошибке: «оператор $ недействителен для атомарных векторов» при втором запуске gsub, и я заметил, что второй столбец исчезнет после запуска первого gsub.

Посоветуйте, пожалуйста, как выполнить все gsub, но сохранив 2-й столбец?

structure(list(text = structure(c(1L, 3L, 7L, 4L, 2L, 5L, 6L), .Label = c("@airasia im searching job", 
"@AirAsia no flight warning for cebu outbound?", "@shazzr1 @AirAsia never mind.. now everyone can fly.", 
"@TigerAir confirmed as having far nastier policies and uncaring customer service than @airasia who I will now fly every time in preference.", 
"@Wingmates Since your taxes is HIGHER than other airlines but your service is really BAD because always change and cancel the flight.", 
"hai MASwings @Wingmates . Bilakah tempoh promosi anda? Saya ingin terbang ke Palawan dengan bajet yang agak rendah :3", 
"One thing I \"like\" about @AirAsia is, DELAY."), class = "factor"), 
created = structure(c(3L, 2L, 1L, 7L, 6L, 4L, 5L), .Label = c("2/2/2014 11:30", 
"2/2/2014 11:32", "2/2/2014 12:18", "24/2/2014 4:03", "29/3/2014 8:21", 
"30/1/2014 16:02", "31/1/2014 8:13"), class = "factor")), .Names = c("text", 
"created"), class = "data.frame", row.names = c(NA, -7L))

person user3456230    schedule 16.04.2014    source источник
comment
Вы присваиваете замененный вектор Data_edited_txt2$text Data_edited_txt2, так что теперь этот объект состоит только из одного вектора. Вместо этого назначьте Data_edited_txt2$text   -  person alexwhan    schedule 16.04.2014


Ответы (1)


Вы переопределяете весь фрейм данных, а не только один столбец. Попробуй это:

Data_edited_txt2$text <- gsub("(RT|via)((?:\\b\\W*@\\w+)+)", "", Data_edited_txt2$text)
Data_edited_txt2$text <- gsub("@\\w+", " ", Data_edited_txt2$text)
Data_edited_txt2$text <- gsub("[[:punct:]]", "", Data_edited_txt2$text) 
person bartektartanus    schedule 16.04.2014