2013-08-06 4 views
2

после множества проб/ошибок и функции поиска Я все еще немного невежествен о I-думали-простодушие вещи (как всегда, hrmpf):R: agrep ошибка при замене строки с другой строкой

I имеют столбец в кадре данных x$question, и внутри этого столбца есть выражение 'A/V' каждый раз в то время, и я просто хочу, чтобы оно было изменено на 'A/B'.

Я попытался немного здесь и там, и подумал, что это должно работать:

x$question[agrep('A/V',x$question)]<-'A/B' 

, но я получаю сообщение об ошибке:

In `[<-.factor`(`*tmp*`, agrep('A/V', : 
invalid factor level, NAs generated  

или я мог бы сделать это

agrep('A/V','A/B', x$question). 

Но вот я получаю ошибку:

Error in .amatch_bounds(max.distance) : 
match distance components must be non-negative 

Поскольку я совершенно не в курсе, я был бы очень благодарен, если бы у вас были предложения или, возможно, еще более простой способ замены строки другой строкой.

+2

Ваши данные являются «фактором», либо преобразуются в символ, либо изменяют «уровни». Приведите пример, и я продемонстрирую, как это сделать. – James

+0

Привет, Джеймс, и спасибо! - Я знал это, проклятый фактор ****. Не должны ли 'уровни (x $ question [" A/V "]) <-" A/B "работать? (чего нет). Я все еще что-то пропустил? - Я загружу небольшой файл с примером, всего за секунду –

ответ

1

Это работает?

gsub("A/V","A/B",x$question) 

Пример:

x<-c("A/V", "A/V", "A/V") 
x<-gsub("A/V","A/B",x) 
>x 
[1] "A/B" "A/B" "A/B" 

Примечание: Вы можете использовать ifelse для этого тоже.

> ifelse(x=="A/B","A/V",x) 
[1] "A/V" "A/V" "A/V" 
+0

Ну, это вроде как и не делает - он выделяет уровни (с теперь правильно измененным выражением), но не меняет данные! –

+0

Просто назначил его столбцу, который вы хотите заменить, как 'x <-gsub (« A/​​V »,« A/​​B », x)», и он заменит все. – Metrics

+1

darn, это работает, halle-mother ******* - lujah. Благодаря! –