检测的特征向量
问题描述:
字母顺序我有几个特征向量是这样的:检测的特征向量
lastname <- c("Smith" ,"Johnson" , "Williams" , "Moore" , "Taylor", "Jones"
, "Brown" , "Davis" , "Miller" , "Wilson")
姓氏的最后4个元素是按字母顺序排列。 我想分割字母顺序开始的向量。 因此,其结果会是什么样子:
lastname1 <- c("Smith" ,"Johnson" , "Williams" , "Moore" , "Taylor", "Jones")
lastname2 <- c("Brown" , "Davis" , "Miller" , "Wilson")
按字母顺序排列的部分总是位于结束,但它的长度可能会有所不同。
任何帮助非常感谢!
答
我们可以创建一个逻辑索引,然后split
向量由索引创建list
的vector
s。
i1 <- rev(cumsum(c(TRUE, diff(rank(rev(lastname))) >0))==1)
split(lastname, i1)
#$`FALSE`
#[1] "Smith" "Johnson" "Williams" "Moore" "Taylor" "Jones"
#$`TRUE`
#[1] "Brown" "Davis" "Miller" "Wilson"
答
这也将工作:
pos <- tail(which(sapply(1:(length(lastname)-1), function(i) lastname[i] < lastname[i+1])==FALSE),1)
lastname[1:pos]
# [1] "Smith" "Johnson" "Williams" "Moore" "Taylor" "Jones"
lastname[(pos+1):length(lastname)]
# [1] "Brown" "Davis" "Miller" "Wilson"