2013-08-06 21 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。谢谢! –