getGPRMC <- function(data) { ans <- list(rmc=NULL, rest=data) rxp <- "\\$GPRMC(,[^,]*){12}\\*[0-9,A-F]{2}\r\n" beg <- regexpr(rxp, data) if(beg == -1) return(ans) end <- beg + attr(beg, "match.length") sub <- substr(data, beg, end - 6) ans$rmc <- strsplit(sub, ",")[[1]] names(ans$rmc) <- c("id","utc","status","lat","N/S", "long","E/W","knots","cog","date", "mag","E/W","mode") ans$rest <- substr(data, end, nchar(data)) return(ans) } getAllGPRMC <- function(data) { res <- getGPRMC(data) ans <- res$rmc while(!is.null(res$rmc)) { ans <- rbind(ans, res$rmc) res <- getGPRMC(res$rest) } return(ans) } testdata <- "5801,W,1,04,2.1,57.7,M,-32.3,M,,*4E\r\n$GPGSA,A,2,03,06,,16,23,,,,,,,,2.3,2.1,1.0*33\r\n$GPGSV,2,2,07,23,71,280,43,24,00,084,00,31,13,096,00*41\r\n$GPGLL,3245.3949,N,07955.4646,W,230318,A,A*56\r\n$GPBOD,,T,,M,,*47\r\n$GPVTG,0.0,T,7.2,M,0.0,N,0.0,K*4B\r\n$PGRME,11.5,M,40.8,M,42.4,M*15\r\n$PGRMZ,189,f,2*1A\r\n$PGRMM,WGS 84*06\r\n$GPRTE,1,1,c,*37\r\n$GPRMC,230320,A,3246.1080,N,07955.4646,W,0.0,0.0,110510,7.2,W,A*1C\r\n$GPRMB,A,,,,,,,,,,,,A,A*0B\r\n$GPGGA,230320,3246.1080,N,07955.4646,W,1,04,2.1,59.8,M,-32.3,M,,*4A\r\n$GPGSA,A,2,03,06,,16,23,,,,,,,,2.3,2.1,1.0*33\r\n$GPGSV,2,1,07,03,60,147,45,06,59,113,41,07,14,299,00,16,46,036,45*76\r\n$GPGLL,3246.1080,N,07955.4646,W,230320,A,A*53\r\n$GPBOD,,T,,M,,*47\r\n$GPVTG,0.0,T,7.2,M,0.0,N,0.0,K*4B\r\n$PGRME,11.5,M,40.8,M,42.4,M*15\r\n$PGRMZ,196,f,2*14\r\n$PGRMM,WGS 84*06\r\n$GPRTE,1,1,c,*37\r\n$GPRMC,230322,A,3246.1080,N,07955.4646,W,0.0,0.0,110510,7.2,W,A*13\r\n$GPRMB,A,,,,,,,,,,,,A,A*0B\r\n$GPGGA,230322,3246.1080,N,07955.4646,W,1,04,2.1,57.4,M,-32.3,M,,*47\r\n$GPGSA,A,2,03,06,,16,23,,,,,,,,2.3,2.1,1.0*33\r\n$GPGSV,2,2,07,23,71,280,43,24,00,084,00,31,13,096,00*41\r\n$GPGLL,3246.1080,N,07955.4646,W,230322,A,A*5C\r\n$GPBOD,,T,,M,,*47\r\n$GPVTG,0.0,T,7.2,M,0.0,N,0.0,K*4B\r\n$PGRME,11.5,M,40.8,M,42.4,M*15\r\n$PGRMZ,188,f,2*1B\r\n$PGRMM,WGS 84*06\r\n$GPRTE,1,1,c,*37\r\n$GPRMC,230324,A,3246.1080,N,07955.4646,W,0.0,0.0,110510,7.2,W,A*12\r\n$GPRMB,A,,,,,,,,,,,,A,A*0B\r\n$GPGGA,230324,3246.1080,N,07955.4646,W,1,04,2.1,55.0,M,-32.3,M,,*40\r\n$GPGSA,A,2,03,06,,16,23,,,,,,,,2.3,2.1,1.0*33\r\n$GPGSV,2,1,07,03,60,147,45,06,59,113,41,07,14,299,00,16,46,036,44*77\r\n$GPGLL,3246.1080,N,07955.4646,W,230324,A,A*5D\r\n$GPBOD,,T,,M,,*47\r\n$GPVTG,0.0,T,7.2,M,0.0,N,0.0,K*4B\r\n$PGRME,11.5,M,40.8,M,42.4,M*15\r\n$PGRMZ,180,f,2*13\r\n$PGRMM,WGS 84*06\r\n$GPRTE,1,1,c,*37\r\n$GPRMC,230326,A,3246.1080,N,07955.4646,W,0.0,0.0,110510,7.2,W,A*16\r\n$GPRMB,A,,,,,,,,,,,,A,A*0B\r\n$GPGGA,230326,3246.1080,N,07955.4646,W,1,04,2.1,54.4,M,-32.3,M,,*41\r\n$GPGSA,A,2,03,06,,16,23,,,,,,,,2.3,2.1,1.0*33\r\n$GPGSV,2,2,07,23,71,280,43,24,00,084,00,31,13,096,00*41\r\n$GPGLL,3246.1080,N,07955.4646,W,230326,A,A*59\r\n$GPBOD,,T,,M,,*47\r\n$GPVTG,0.0,T,7.2,M,0.0,N,0.0,K*4B\r\n$PGRME,11.5,M,40.8,M,42.4,M*15\r\n$PGRMZ,179,f,2*15\r\n$PGRMM,WGS 84*06\r\n$GPRTE,1,1,c,*37\r\n$GPRMC,230328,A,3246.1080,N,07955.4646,W,0.0,0.0,110510,7.2,W,A*11\r\n$GPRMB,A,,,,,,,,,,,,A,A*0B\r\n$GPGGA,230328,3246.1080,N,07955.4646,W,1,04,2.1,57.0,M,-32.3,M,,*41\r\n$GPGSA,A,2,03,06,,16,23,,,,,,,,2.3,2.1,1.0*33\r\n$GPGSV,2,1,07,03,60,147,45,06,59,112,41,07,14,299,39,16,46,036,45*7D\r\n$GPGLL,3246.1080,N,07955.4646,W,230328,A,A*5E\r\n$GPBOD,,T,,M,,*47\r\n$GPVTG,0.0,T,7.2,M,0.0,N,0.0,K*4B\r\n$PGR"