2016-02-03 55 views
0

匹配可以用一个字符串搜索标准的所有字符串我有一个看起来像这样的数据:替换data.table

    sources 
1:   Jana’s iPhone 
2:  Richard's iPhone 6 
3:    Denise's 
4:   Sara’s iPhone 
5:  Jeff’s Apple Watch 
6: BLAIR’s Apple Watch 
7:  Sunshine's iPhone 
8:   Brian's iPhone 
9: Jonathan’s Apple Watch 
10: patricia’s Apple Watch 

我试图替换包含iPhone任何字符串只说iPhone。我怎样才能做到这一点?

我试图在包含一列也被称为sources数据表sources如下:

sources[length(grep("iPhone", sources)) > 0, sources:= "iPhone"] 

但这将所有行的“iPhone”,即使该行不包含原来的以“iPhone的字符串”。我猜这是因为grep或长度没有矢量化,所以我最终选择了所有行。那么我的问题就变成了如何识别包含子字符串的行?

回答

5

使用grepl代替:

sources[grepl("iPhone", sources), sources:= "iPhone"] 
+2

而对于效率'固定= TRUE' –