2012-07-12 25 views
1

我有下面的代碼和結果:[R編程:regexpr未來occurence

> x <- c("ABCDE CDEFG FGHIJ") 
> x 
[1] "ABCDE CDEFG FGHIJ" 
> regexpr("D", x) 
[1] 4 
attr(,"match.length") 
[1] 1 

regexpr僅返回「d」的第一次出現,我怎樣才能得到它返回「d」

所有出現

回答

2

你是如此接近 - 只是一對夫婦的線從幫助文件regexpr下來...

gregexpr("D", x) 
# [[1]] 
# [1] 4 8 
# attr(,"match.length") 
# [1] 1 1 
# attr(,"useBytes") 
# [1] TRUE 
+0

+1了明顯的方法! – mnel 2012-07-12 06:06:32

0

我確信會有純粹的regex方法。然而stringr::str_locate_all就足夠了

library(stringr) 

unique(unlist(str_locate_all(x, 'D'))) 

## [1] 4 8 
0

您還可以使用strsplit這樣的:

which(unlist(strsplit(x,split=""))=="D") 
[1] 4 8 

這種方式,你也可以有精確匹配D.