r - 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
是矢量化的,我不想使用循环来执行此操作,因为这会花费太长时间。我认为这个问题必须在以前的问题中得到解决,但我找不到解决方案。另外,如果有完全不同的方法来处理这个,请告诉我。
解决方案
这是一个例子。你是这个意思吗?
S = c("appleap", "tapppapp")
P = "ap"
lapply(gregexpr(P, S), function(x) as.vector(x))
#[[1]]
#[1] 1 6
#[[2]]
#[1] 2 6
推荐阅读
- mysql - java.sql.SQLException:用户'root'@'localhost'的访问被拒绝(使用密码:YES)Spring boot
- logging - 我无法再从 Google Apps 脚本中找到日志(由 Logger 创建)
- java - 找不到合适的驱动程序(Postgres JDBC):java.sql.SQLException:没有找到适合 jdbc:postgresql://rds-service:5432/postgres 的驱动程序
- android - 在android中单击按钮时如何在单词之间切换
- java - 如何将 int 的值更改为循环方程的结果?
- python - Zip 函数在 python 中没有按预期工作
- python - 使用 pivot_table 和 groupby 进行计算(groupby.mean() 不解决唯一的“批次”)
- go - Golang 模块可以在 master 以外的分支上使用吗?
- python - 如何在 Python 中创建动态求解器(优化函数)
- javascript - 如何从 Angular 中的项目列表中添加表单验证