2014-02-06 3 views
2

У меня есть x = c("AU|30|3020","AU|15|1510","AU|2000|510").Как найти позицию конкретного символа в символьном векторе в r

Если я хочу знать положение последнего «|» для каждого элемента в x, как это сделать. Ответ должен быть 6 6 8.

Допустимая альтернатива заключается в том, чтобы найти положение (скажем) второго «|» для каждого элемента (в отличие от последнего «|»).

+0

Может быть что-то вроде 'lapply (gregexpr (" | ", x, fixed = T), tail, n = 1)' полезно? –

+0

Я использовал sapply (gregexpr ("|", x, fixed = T), tail, n = 1), и он работал нормально. Благодарю. – Mahesh

ответ

0

Есть ли всегда 2 |? если это так

unlist(lapply(gregexpr("\\|",x),"[[",2)) 

В противном случае может возникнуть необходимость в обходном пути. Кроме того, обратите внимание на stringr пакет

2

Вы можете получить позицию последнего | (независимо от общего числа | с) с помощью следующей команды:

unlist(gregexpr("\\|[^|]*$", x)) 
# [1] 6 6 8 
Смежные вопросы