On 4/14/2011 2:04 PM, 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.
Another approach, in addition to the ones you have already been given,
is to use the colsplit function in the reshape package. This is the
sort of thing it is designed to do.
library("reshape")
colsplit(beatles, " ", names=c("firstName", "lastName"))
Similar caveats apply, though, in that it assumes only 2 names that are
separated by one space (and will give a warning if that is not the case).
--
Brian S. Diggs, PhD
Senior Research Associate, Department of Surgery
Oregon Health & Science University
______________________________________________
R-help@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.