Dear R Users, I am curious whether there is any simple solution o my problem. My example 'series': series <- c(1,1,1,0,1,0,0,1,1,0,0,0,0,1) My 'subset' of interest: subset <- c(0,0,0,0) Is there any function which tells me that the subset exists in my series, and gives me position where in series is starts. In provided example the subset exists and covers the elements 10:13 of the 'series'. Thanks a lot , robert -- View this message in context: http://r.789695.n4.nabble.com/detect-subset-in-series-tp4076285p4076285.html Sent from the R help mailing list archive at Nabble.com.
detect subset in series
4 messages · David Winsemius, R. Michael Weylandt, threshold
On Nov 16, 2011, at 8:25 AM, threshold wrote:
Dear R Users, I am curious whether there is any simple solution o my problem. My example 'series': series <- c(1,1,1,0,1,0,0,1,1,0,0,0,0,1) My 'subset' of interest: subset <- c(0,0,0,0) Is there any function which tells me that the subset exists in my series, and gives me position where in series is starts. In provided example the subset exists and covers the elements 10:13 of the 'series'.
?rle ?cumsum # may be needed to accumulate the number of postions before the rle$lengths criterion is first met.
David Winsemius, MD West Hartford, CT
If your data is also binary like that below, it might be useful/easier to use regular expressions tools as well: e.g., series <- c(1,1,1,0,1,0,0,1,1,0,0,0,0,1) subset <- c(0,0,0,0) print(regexpr(paste(subset, collapse = ""),paste(series, collapse = ""))) Michael
On Wed, Nov 16, 2011 at 9:55 AM, David Winsemius <dwinsemius at comcast.net> wrote:
On Nov 16, 2011, at 8:25 AM, threshold wrote:
Dear R Users, I am curious whether there is any simple solution o my problem. My example 'series': series <- c(1,1,1,0,1,0,0,1,1,0,0,0,0,1) My 'subset' of interest: subset <- c(0,0,0,0) Is there any function which tells me that the subset exists in my series, and gives me position where in series is starts. In provided example the subset exists and covers the elements 10:13 of the 'series'.
?rle ?cumsum ? # may be needed to accumulate the number of postions before the rle$lengths criterion is first met. -- David Winsemius, MD West Hartford, CT
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Thanks for the answer. I found that smth like below works subset <- c(1,0,0) series <- c(1,1,1,0,1,0,0,1,1,0,0,0,0,1) subset1 <- paste(subset, collapse='') series1 <- paste(series, collapse='') xx <- gregexpr(subset1, series1, fixed=TRUE) as.numeric(xx[[1]]) ## yields the first element numbers in series [1] 5 9 -- View this message in context: http://r.789695.n4.nabble.com/detect-subset-in-series-tp4076285p4076644.html Sent from the R help mailing list archive at Nabble.com.