R:stringr用于查找行的起始位置

时间:2015-12-09 02:59:15

标签: r apply stringr

我可以使用stringr在第一行找到起始“http”位置

library(stringr)

a <- str_locate(message[1,], "http")[1]
a 
[1] 38

我想找到每一行的起始位置,并使用“apply”功能:

message$location <- apply(message, 1, function(x) str_locate(message[x,], "http")[1]) 

但是它显示了所有“NA”值,我能解决它吗?

1 个答案:

答案 0 :(得分:1)

由于我们使用的是匿名函数调用(function(x)),我们可以将每行的输入变量用作x,即str_locate(x, ...)

apply(message, 1, function(x) str_locate(x, "http")[1])
#[1] 11 16

或者没有指定匿名函数

apply(message, 1, str_locate, pattern="http")[1,]
#[1] 11 16

正如@thelatemail所提到的,如果我们只在第一列中寻找模式,我们就不需要apply循环。

str_locate(message[,1], "http")[,1]
#[1] 11 16

数据

message <- data.frame(V1= c("Something http://www...", 
            "Something else http://www.."), v2= 1:2)