【发布时间】:2019-07-21 11:50:24
【问题描述】:
我有一个这样的 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 是矢量化的,我不想使用循环来执行此操作,因为这会花费太长时间。我认为这个问题在之前的问题中一定已经解决了,但我找不到解决方案。另外,如果有完全不同的方法来处理这个问题,请告诉我。
【问题讨论】:
-
请使用
dput显示示例尝试使用library(stringr);str_locate_all(".||.", fixed("."))[[1]][,1] -
unlist 适用于一行,但应用于整个列表时,它不会保留行信息。
-
str_locate_all 似乎工作正常。似乎也应该有一个简单的 gregexpr 解决方案。