字符向量上的“下标越界”

时间:2013-08-27 09:16:27

标签: r sapply strsplit

我有一个矢量“nameAlpha”,例如c(“Mark Twain”,“Phil Hall”,“Michael P. O'Connor”,“”,......)。我想将每个名字传递给另一个矢量“nameAlpha_first”。我跑这个

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

但是我得到了

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

可能是因为向量的少数元素是空的吗? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

假设我们定义并预处理字符向量:

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

你应该写

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

它会起作用。如果你想要姓氏,你可以做

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

将为您提供姓氏向量。