r - 字符向量上的 "subscript out of bounds"

标签 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

是否是因为向量中很少有元素是空的? 我该如何修复它?

最佳答案

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

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)

这将为您提供姓氏向量。

关于r - 字符向量上的 "subscript out of bounds",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18461499/

相关文章:

r - ggplot 图例 - 更改标签、顺序和标题

dataframe - 使用 OPTIM() 将附加列更改为现有数据框或 tibble

R从列表列表中删除空(nchar = 0)元素

r - 对内部使用 grepl 的 vapply 函数感到困惑(datacamp 类(class)的一部分)

regex - R:反斜线(\)

r - 用加号 (+) 字符拆分字符串

r - 收集列而不重复

r - 在 y 轴上方添加空间而不用 expand()

r - 将重叠间隔与 lubridate 结合

r - 如何矢量化 R strsplit?