[R] creating possible cominations of a vector's elements

David L Carlson dcarlson at tamu.edu
Fri Dec 9 00:51:03 CET 2016


You can use expand.grid() and mapply():

mystring <- "this is my vector"
mystring.spl <- strsplit(mystring, " ")[[1]]

makestrings <- function(x) {
     len <- length(mystring.spl)
     idx <- expand.grid(1:len, 1:len)
     idx <- idx[idx$Var2 <= idx$Var1, c("Var2", "Var1")]
     mapply(function(x, y) paste(mystring.spl[x:y], collapse=" "), 
          x=idx[, 1], y=idx[, 2])
}
makestrings(mystring.spl)

 [1] "this"              "this is"           "this is my"       
 [4] "this is my vector" "is"                "is my"            
 [7] "is my vector"      "my"                "my vector"        
[10] "vector"

This makes a vector of strings but if you want a list use as.list(mapply())

David L. Carlson
Department of Anthropology
Texas A&M University



-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Dimitri Liakhovitski
Sent: Thursday, December 8, 2016 5:03 PM
To: r-help <r-help at r-project.org>
Subject: [R] creating possible cominations of a vector's elements

Hello!

I have a vector of strings 'x' that was based on a longer string
'mystring' (the actual length of x is unknown).

mystring <- "this is my vector"
x <- strsplit(mystr, " ")[[1]]

I am looking for an elegant way of creating an object (e.g., a list)
that contains the following strings:

"this"
"this is"
"this is my"
"this is my vector"
"is"
"is my"
"is my vector"
"my"
"my vector"
"vector"

Thanks a lot!

-- 
Dimitri

______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.



More information about the R-help mailing list