查找字符的位置并将位置写入r中的 Dataframe

tv6aics1  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(103)

假设这个框架:

col1<- c('a_b_c_fv', 'ff_g1_h_fv','e_ii_jjjj_fv' )
df <- data.frame(col1)

希望找到下划线_的第三个出现位置,然后将该位置写回数据框。所以最终结果看起来像这样:

df$location <- c(6,8,10)

请问我该怎么做?
我已经尝试

unlist(gregexpr('_', df$col1))[3]

但我只能得到第一行的位置

qpgpyjmq

qpgpyjmq1#

因为gregexpr为每个向量元素输出一个列表,所以需要在unlist之前提取相应的值。提取信息的一个例子是使用sapply

df$location <- sapply(gregexpr('_', df$col1), `[[`, 3)

df
          col1 location
1     a_b_c_fv        6
2   ff_g1_h_fv        8
3 e_ii_jjjj_fv       10
t40tm48m

t40tm48m2#

可以使用nchar + gsub

> nchar(gsub("(([^_]+_){3}).*", "\\1", col1))
[1]  6  8 10

regexpr

> attr(regexpr("([^_]+_){3}", col1), "match.length")
[1]  6  8 10

相关问题