R найти все индексы совпадений символов в списке строк - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть такой df (с ~ 800 000 строк)

 #    str

   # 1  .||.

   # 2  .

   # 3  .|..

   # 4  ..

, и я хочу новый кадр данных, подобный этому (запишите местоположение в каждой строке символов с помощью .) (извините заформатирование столбцов)

#   str     loc

   # 1  .||.    1 4

   # 2  .       1

   # 3  .|..    1 3 4

   # 4  ..      1 2

Я могу получить местоположения с помощью gregexpr(".", str, fixed = TRUE), но я не знаю, как получить первую часть вывода gregexpr без трех частей атрибута.Позже я буду использовать векторы местоположения в других вычислениях.Поскольку gregexpr векторизован, я не хочу использовать цикл для этого, так как это займет слишком много времени.Я думаю, что эта проблема должна была быть рассмотрена в предыдущих вопросах, но я не могу найти решение.Кроме того, если есть совершенно другой способ справиться с этим, пожалуйста, сообщите мне.

1 Ответ

0 голосов
/ 27 февраля 2019

Вот пример.Это то, что вы имеете в виду?

S = c("appleap", "tapppapp")
P = "ap"

lapply(gregexpr(P, S), function(x) as.vector(x))
#[[1]]
#[1] 1 6

#[[2]]
#[1] 2 6
...