我有一个向量“nameAlpha”,例如c(“Mark Twain”,“Phil Hall”,“Michael P. O'Connor”,“”,...)。我想将每个名字传递给另一个向量“nameAlpha_first”。我运行这个
nameAlpha_first <- sapply(strsplit(nameAlpha, "\\s+"), "[[", 1)
Run Code Online (Sandbox Code Playgroud)
但我得到
Error in FUN(X[[12L]], ...) : subscript out of bounds
Run Code Online (Sandbox Code Playgroud)
难道是因为向量中很少有元素是空的吗?我该如何解决它?
假设我们定义并预处理一个字符向量:
nameAlpha<-c("Mark Twain", NA, "Phil Hall",
"Michael P. O'Connor", " ", "", NA, "John")
nameAlpha[which(nchar(nameAlpha)<2)]<-NA
Run Code Online (Sandbox Code Playgroud)
你应该写
sapply(strsplit(nameAlpha, "\\s+"), head, n=1)
Run Code Online (Sandbox Code Playgroud)
它会起作用的。如果你想要姓氏,你可以这样做
sapply(strsplit(nameAlpha, "\\s+"), tail, n=1)
Run Code Online (Sandbox Code Playgroud)
这将为您提供姓氏向量。