2013-08-27 56 views
0

我有一个向量“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 

难道是因为载体的几个要素是空的? 我该如何解决它?

回答

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) 

这将为您提供姓氏的载体。

+0

太棒了!你可以解释吗?问题是缺失的价值吗? – CptNemo

+0

是的问题是缺少的值。因为它没有元素1.)原则上我会预处理你的角色矢量,并确保“”,“”被设置为NA。 –

+0

我应该继续解析第二个名字吗? 'sapply(strsplit(nameAlpha,“\\ s +”),head,n = 2)'不符合我的预期... – CptNemo