应用 rowwise str_split 不起作用

问题描述 投票:0回答:1

我有一个字符列,其中包含单个字符串中的电子邮件地址(以逗号分隔)。 我还有另一个字符列也包含此类电子邮件地址。

我现在想要拆分第一列中的字符串(即创建电子邮件地址向量),然后检查其中是否有任何一个出现在第二列中。

我认为这对于

stringr
函数来说是一项简单的任务,但似乎它们并没有以我想象的方式进行矢量化。

我知道如何通过其他解决方法(例如分离更长的时间等)来完成我的任务,但我对一次调用而不重塑任何东西感兴趣。

数据:

df <- structure(list(a = c("[email protected], [email protected]", "[email protected], [email protected]"),
                     b = c("[email protected], [email protected]", "[email protected], [email protected]")),
                class = "data.frame",
                row.names = c(NA, -2L))

我的代码:

df |>
  mutate(test = any(str_detect(a, str_split_1(b, ", "))))

Error in `mutate()`:
ℹ In argument: `test = any(str_detect(a, str_split_1(b, ", ")))`.
Caused by error in `str_split_1()`:
! `string` must be a single string, not a character vector.
Run `rlang::last_trace()` to see where the error occurred.

看起来

str_split_1
无法识别每行的单个字符串,而是采用整列的字符向量。

预期输出:

                       a                      b  test
1 [email protected], [email protected] [email protected], [email protected]  TRUE
2 [email protected], [email protected] [email protected], [email protected] FALSE
r stringr
1个回答
0
投票

你可以这样做:

df %>%
 mutate(test = map_lgl(.x = str_split(b, ", "), ~ any(str_detect(a, .x))))

                       a                      b  test
1 [email protected], [email protected] [email protected], [email protected]  TRUE
2 [email protected], [email protected] [email protected], [email protected] FALSE
© www.soinside.com 2019 - 2024. All rights reserved.