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

Dimitri Liakhovitski dimitri.liakhovitski at gmail.com
Fri Dec 9 16:52:53 CET 2016


Thanks a lot, David and Bill!


On Thu, Dec 8, 2016 at 8:16 PM, David L Carlson <dcarlson at tamu.edu> wrote:
> Not my day. Another correction:
>
> makestrings <- function(vec) {
>      len <- length(vec)
>      idx <- expand.grid(1:len, 1:len)
>      idx <- idx[idx$Var2 <= idx$Var1, c("Var2", "Var1")]
>      mapply(function(x, y) paste(vec[x:y], collapse=" "),
>           x=idx[, 1], y=idx[, 2])
> }
>
> David C
>
> -----Original Message-----
> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of David L Carlson
> Sent: Thursday, December 8, 2016 7:12 PM
> To: Dimitri Liakhovitski <dimitri.liakhovitski at gmail.com>; r-help <r-help at r-project.org>
> Subject: Re: [R] creating possible cominations of a vector's elements
>
> This corrects an error in my earlier function definition:
>
> makestrings <- function(vec) {
>      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(vec[x:y], collapse=" "),
>           x=idx[, 1], y=idx[, 2])
> }
>
> David C
>
> -----Original Message-----
> From: David L Carlson
> Sent: Thursday, December 8, 2016 5:51 PM
> To: 'Dimitri Liakhovitski' <dimitri.liakhovitski at gmail.com>; r-help <r-help at r-project.org>
> Subject: RE: [R] creating possible cominations of a vector's elements
>
> 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.
>
> ______________________________________________
> 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.



-- 
Dimitri Liakhovitski



More information about the R-help mailing list