Question

I have a vector "nameAlpha" such as c("Mark Twain", "Phil Hall", "Michael P. O'Connor", " ",...). I want to pass each first name to another vector "nameAlpha_first". I run this

nameAlpha_first <- sapply(strsplit(nameAlpha, "\\s+"), "[[", 1)

But I get

Error in FUN(X[[12L]], ...) : subscript out of bounds

Could it be because few elements of the vector are empty? How I move to fix it?

Was it helpful?

Solution

Assume we define and preprocess a character vector as such:

nameAlpha<-c("Mark Twain", NA, "Phil Hall", 
             "Michael P. O'Connor", " ", "", NA, "John")
nameAlpha[which(nchar(nameAlpha)<2)]<-NA

You should write

sapply(strsplit(nameAlpha, "\\s+"), head, n=1)

And it will work. If you want the last name you can do

sapply(strsplit(nameAlpha, "\\s+"), tail, n=1)

which will provide you with the vector of last names.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top