如何从向量中提取特定 'string' 的最后一次出现

How to extract last occurrence of a particular 'string' from a vector

我有一个存储了几个二进制数的向量。由于这些都已经过滤了,所以也知道都是大于0的。

v <- c(1, 10, 11, 110, 10000, 101000, 100100000, 100001)

现在我想要一个 result_vector(向量,因为输入向量是数据框中的一列)给我 position/location 向量 [=15= 中最后一次出现的 1 ].我正在尝试 stringr::str_locate(as.Charachter(v), "1")[,2] 但它给了我这个向量第一次出现的结束位置。 stringr::str_locate_all 在列表中给出结果,因此在上下文中没有用。而且,我希望这个位置从后面算起。但是,如果我可以从左侧提取位置,则可以通过减去 nchar(as.Charachter(v)) 将其转换为反向。请指导我如何继续获得

这样的结果
result_vector = c(1, 2, 1, 2, 5, 4, 6, 1)
result_vector <- nchar(v) - sapply(stringr::str_locate_all(as.character(v), "1"), max) + 1

由于数字不是 1 就是 0,您的问题在逻辑上等同于计算尾随零的个数。

result_vector <- nchar(x) - nchar(trimws(x, "right", "0")) + 1L

一个stringi选项可以是:

stri_locate_first(stri_reverse(v), fixed = "1")[, 1]

[1] 1 2 1 2 5 4 6 1