2013-08-27 63 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