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

From: Rolf Turner <rolf.turner_at_xtra.co.nz>
Date: Fri, 15 Apr 2011 10:41:21 +1200

On 15/04/11 09:04, Cliff Clive wrote:
> 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

Whenever you think of using a for loop, stop and think about using some flavour of apply() instead:

melvin <- strsplit(beatles," ")
clyde <- data.frame(firstName=sapply(melvin,function(x){x[1]}),                                      

lastName=sapply(melvin,function(x){x[2]}))

     cheers,

             Rolf Turner



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. Received on Thu 14 Apr 2011 - 22:46:43 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 14 Apr 2011 - 22:50:30 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive