2013-08-06 48 views
2

大量的試驗/錯誤和搜索功能,我仍關於我深思熟慮的簡單事情有點無能後替換字符串(一如既往,hrmpf):R:AGREP錯誤時,另一個字符串

我在數據框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

你的數據是一個'factor',可以轉換爲'character'或修改'levels'。提供一個例子,我將演示如何。 – James

+0

嗨,詹姆斯,謝謝! - 我知道,該死的因素****。不應該'水平(x $問題[「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。謝謝! –