首页 > 解决方案 > R在字符串列表中查找字符匹配的所有索引

问题描述

我有一个像这样的 df(大约 800,000 行)

 #    str

   # 1  .||.

   # 2  .

   # 3  .|..

   # 4  ..

我想要一个像这样的新数据框(用 a 记录每个字符串中的位置.)(对不起列的格式)

#   str     loc

   # 1  .||.    1 4

   # 2  .       1

   # 3  .|..    1 3 4

   # 4  ..      1 2

我可以使用 获取位置gregexpr(".", str, fixed = TRUE),但我不知道如何获取gregexpr输出的第一部分,没有三个属性部分。稍后我将在其他计算中使用位置向量。由于gregexpr是矢量化的,我不想使用循环来执行此操作,因为这会花费太长时间。我认为这个问题必须在以前的问题中得到解决,但我找不到解决方案。另外,如果有完全不同的方法来处理这个,请告诉我。

标签: rstringindexingmatch

解决方案


这是一个例子。你是这个意思吗?

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

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

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

推荐阅读