2016-02-03 85 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' –