矢量化str_locate未按预期工作
我有以下数据框:矢量化str_locate未按预期工作,r,dplyr,stringr,R,Dplyr,Stringr,我有以下数据框: df <- data.frame(string=c('abcde', 'cde')) 这是预期的输出,但我不希望使用rowwise(),因为它对于大数据帧非常慢 因此,我尝试将函数矢量化并删除rowwise()命令: Vstr_locate <- Vectorize(str_locate) df %>% #rowwise() %>% mutate(pos=Vstr_locate(string = string, pattern = "de")[
df <- data.frame(string=c('abcde', 'cde'))
这是预期的输出,但我不希望使用rowwise()
,因为它对于大数据帧非常慢
因此,我尝试将函数矢量化并删除rowwise()
命令:
Vstr_locate <- Vectorize(str_locate)
df %>%
#rowwise() %>%
mutate(pos=Vstr_locate(string = string, pattern = "de")[2])
问题:
- 为什么我的矢量化函数不能工作
- 如何在不使用
的情况下获得预期的输出李>rowwise()
df %>%
#rowwise() %>%
mutate(pos=Vstr_locate(string = string, pattern = "de")[2,])
string pos
1 abcde 5
2 cde 3
看看这两个函数的输出
str_locate(string = "abcde", pattern = "de")
start end
[1,] 4 5
vs
类似地,如果将每个应用于列表
library(purrr)
strings <- c('abcde', 'cde')
map(strings, str_locate, "de")
[[1]]
start end
[1,] 4 5
[[2]]
start end
[1,] 2 3
您想要的元素被索引为
[2,]
,带有Vstr\u locate
str\u locate
已矢量化,无需按行
或矢量化
:
df %>% mutate(pos=str_locate(string = string, pattern = "de")[, 2])
# string pos
# 1 abcde 5
# 2 cde 3
Vstr_locate(string = "abcde", pattern = "de")
abcde
[1,] 4
[2,] 5
library(purrr)
strings <- c('abcde', 'cde')
map(strings, str_locate, "de")
[[1]]
start end
[1,] 4 5
[[2]]
start end
[1,] 2 3
map(strings, Vstr_locate, "de")
[[1]]
abcde
[1,] 4
[2,] 5
[[2]]
cde
[1,] 2
[2,] 3
df %>% mutate(pos=str_locate(string = string, pattern = "de")[, 2])
# string pos
# 1 abcde 5
# 2 cde 3