An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140801/59e91417/attachment.pl>
Better use with gsub
6 messages · Doran, Harold, Gabor Grothendieck, arun +2 more
On Fri, Aug 1, 2014 at 10:46 AM, Doran, Harold <HDoran at air.org> wrote:
I have done an embarrassingly bad job using a mixture of gsub and strsplit to solve a problem. Below is sample code showing what I have to start with (the vector xx) and I want to end up with two vectors x and y that contain only the digits found in xx.
Any regex users with advice most welcome
Harold
xx <- c("S24:57", "S24:86", "S24:119", "S24:129", "S24:138", "S24:163")
yy <- gsub("S","\\1", xx)
a1 <- gsub(":"," ", yy)
a2 <- sapply(a1, function(x) strsplit(x, ' '))
x <- as.numeric(sapply(a2, function(x) x[1]))
y <- as.numeric(sapply(a2, function(x) x[2]))
library(gsubfn) strapply(xx, "\\d+", as.numeric, simplify = TRUE)
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 24 24 24 24 24 24 [2,] 57 86 119 129 138 163
Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com
You could try:
library(stringr)
?
simplify2array(str_extract_all(xx, perl('(?<=[A-Z]|\\:)\\d+')))
???? [,1] [,2] [,3]? [,4]? [,5]? [,6]
[1,] "24" "24" "24"? "24"? "24"? "24"
[2,] "57" "86" "119" "129" "138" "163"
A.K.
On Friday, August 1, 2014 10:49 AM, "Doran, Harold" <HDoran at air.org> wrote:
I have done an embarrassingly bad job using a mixture of gsub and strsplit to solve a problem. Below is sample code showing what I have to start with (the vector xx) and I want to end up with two vectors x and y that contain only the digits found in xx.
Any regex users with advice most welcome
Harold
xx <- c("S24:57",? "S24:86",? "S24:119",? "S24:129",? "S24:138",? "S24:163")
yy <- gsub("S","\\1", xx)
a1 <- gsub(":"," ", yy)
a2 <- sapply(a1, function(x) strsplit(x, ' '))
x <- as.numeric(sapply(a2, function(x) x[1]))
y <- as.numeric(sapply(a2, function(x) x[2]))
??? [[alternative HTML version deleted]]
______________________________________________
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.
Forgot about as.numeric.
?sapply(str_extract_all(xx, perl('(?<=[A-Z]|\\:)\\d+')),as.numeric)
???? [,1] [,2] [,3] [,4] [,5] [,6]
[1,]?? 24?? 24?? 24?? 24?? 24?? 24
[2,]?? 57?? 86? 119? 129? 138? 163
On Friday, August 1, 2014 10:59 AM, arun <smartpink111 at yahoo.com> wrote:
You could try:
library(stringr)
?
simplify2array(str_extract_all(xx, perl('(?<=[A-Z]|\\:)\\d+')))
???? [,1] [,2] [,3]? [,4]? [,5]? [,6]
[1,] "24" "24" "24"? "24"? "24"? "24"
[2,] "57" "86" "119" "129" "138" "163"
A.K.
On Friday, August 1, 2014 10:49 AM, "Doran, Harold" <HDoran at air.org> wrote:
I have done an embarrassingly bad job using a mixture of gsub and strsplit to solve a problem. Below is sample code showing what I have to start with (the vector xx) and I want to end up with two vectors x and y that contain only the digits found in xx.
Any regex users with advice most welcome
Harold
xx <- c("S24:57",?? "S24:86",?? "S24:119",? "S24:129",? "S24:138",? "S24:163")
yy <- gsub("S","\\1", xx)
a1 <- gsub(":"," ", yy)
a2 <- sapply(a1, function(x) strsplit(x, ' '))
x <- as.numeric(sapply(a2, function(x) x[1]))
y <- as.numeric(sapply(a2, function(x) x[2]))
??? [[alternative HTML version deleted]]
______________________________________________
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.
On Aug 1, 2014, at 9:46 AM, Doran, Harold <HDoran at air.org> wrote:
I have done an embarrassingly bad job using a mixture of gsub and strsplit to solve a problem. Below is sample code showing what I have to start with (the vector xx) and I want to end up with two vectors x and y that contain only the digits found in xx.
Any regex users with advice most welcome
Harold
xx <- c("S24:57", "S24:86", "S24:119", "S24:129", "S24:138", "S24:163")
yy <- gsub("S","\\1", xx)
a1 <- gsub(":"," ", yy)
a2 <- sapply(a1, function(x) strsplit(x, ' '))
x <- as.numeric(sapply(a2, function(x) x[1]))
y <- as.numeric(sapply(a2, function(x) x[2]))
If a matrix is a satisfactory result, rather than two separate vectors:
sapply(strsplit(gsub("S", "", xx), xx, split = ":"), as.numeric)
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 24 24 24 24 24 24 [2,] 57 86 119 129 138 163 Regards, Marc Schwartz
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20140801/f9be206d/attachment.pl>