String Conversion to R | Grouping the words of a string
5 answers
You can also do:
library(stringr)
txt2 <- str_extract_all(text, "[^,]+")[[1]]
paste(paste(txt2[-length(txt2)],txt2[-1],sep=" "), collapse=", ")
#[1] "Lorem ipsum, ipsum dolor, dolor sit, sit amet, amet consectetuer"
or
library(gsubfn)
paste(strapply(text, "([^,]+),(?=([^,]+))", paste, backref= -2, perl=TRUE)[[1]], collapse=",")
#[1] "Lorem ipsum,ipsum dolor,dolor sit,sit amet,amet consectetuer"
+2
source to share
You can use these functions from stringi
package
require(stringi)
text <- "Lorem,ipsum,dolor,sit,amet,consectetuer"
words <- stri_split_fixed(text,",")[[1]]
stri_join(words[-length(words)]," ",words[-1],collapse = ", ")
## [1] "Lorem ipsum, ipsum dolor, dolor sit, sit amet, amet consectetuer"
some guidelines :)
stringi <- function(){
words <- stri_split_fixed(text,",")[[1]]
stri_join(words[-length(words)]," ",words[-1],collapse = ", ")
}
gsubAvinash <- function(){
f <- gsub(",([^,]*)", " \\1,\\1", text, perl=TRUE)
result <- gsub(",[^,]*$", "", f, perl=TRUE)
result
}
strsplitBeggineR <- function(){
x <- strsplit(text, ",")[[1]]
paste0(sapply(1:(length(x)-1), function(z) paste(x[c(z, z+1)], collapse = " ")), collapse = ",")
}
stringrAkrun <- function(){
txt2 <- str_extract_all(text, "[^,]+")[[1]]
paste(paste(txt2[-length(txt2)],txt2[-1],sep=" "), collapse=", ")
}
require(microbenchmark)
microbenchmark(stringi(), gsubAvinash(),strsplitBeggineR(),stringrAkrun())
Unit: microseconds
expr min lq median uq max neval
stringi() 8.657 10.6090 16.5005 17.6730 41.058 100
gsubAvinash() 14.506 17.1055 20.2105 22.2040 97.399 100
strsplitBeggineR() 53.609 59.7755 64.9470 68.3105 121.767 100
stringrAkrun() 148.036 157.4715 162.4885 168.2880 342.471 100
+2
source to share