[R] Creating a dataframe from a vector of character strings

Tóth Dénes tdenes at cogpsyphy.hu
Fri Apr 15 00:33:16 CEST 2011


You could use ?unlist:

structure(data.frame(
    matrix(unlist(strsplit(beatles," ")),length(beatles),2,T)),
    names=c("FirstName","LastName"))

Note that this compact code does not guard you against typos, that is
names with >2 or <2 elements.

Hope that helps,
Denes



> I have a vector of character strings that I would like to split in two,
> and
> place in columns of a dataframe.
>
> So for example, I start with this:
>
> beatles <- c("John Lennon", "Paul McCartney", "George Harrison", "Ringo
> Starr")
>
> and I want to end up with a data frame that looks like this:
>
>> Beatles = data.frame(firstName=c("John", "Paul", "George", "Ringo"),
>                        lastName=c("Lennon", "McCartney", "Harrison",
> "Starr"))
>> Beatles
>   firstName  lastName
> 1      John    Lennon
> 2      Paul McCartney
> 3    George  Harrison
> 4     Ringo     Starr
>
>
> I tried string-splitting the first vector on the spaces between first and
> last names, and it returned a list:
>
>> strsplit(beatles, " ")
> [[1]]
> [1] "John"   "Lennon"
>
> [[2]]
> [1] "Paul"      "McCartney"
>
> [[3]]
> [1] "George"   "Harrison"
>
> [[4]]
> [1] "Ringo" "Starr"
>
>
> Is there a fast way to convert this list into a data frame?  Right now all
> I
> can think of is using a for loop, which I would like to avoid, since the
> real application I am working on involves a much larger dataset.
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/Creating-a-dataframe-from-a-vector-of-character-strings-tp3450716p3450716.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list