列表上的mutate_impl(.data,点)中的错误

时间:2018-10-02 00:13:30

标签: list mutate

我有一个数据框,我想添加一列具有匹配模式的列,并将其存储在列表中,如下所示:

这是我的数据框:

order_lines <- tibble(
  order_number = c(100, 200, 300, 400, 500, 600),
  description = c("xyz", "axyz", "abc", "wabc", "abcla", "ggg")
)

这是我要在order_lines $ description中查找的模式的列表:

ref <- list("xyz", "abc")

我创建了一个函数来做到这一点:

extractor <- function(df, pat){
  df <- df %>%
        mutate(references = str_extract(string = description, pattern = pat))
  df
}

但是当我运行extractor(df = order_lines, pat = ref)时,我得到的是下一个错误: 'mutate_impl(.data,点)中的错误:评估错误:'类型'的适用方法不适用于类“列表”的对象。

当我第一次遇到这个问题时,我认为这很容易解决,因为我发现使用带有dplyr :: mutate的列表是有问题的。我仍然认为该列表涉及其中,但我不知道如何解决。

在这种情况下,我不知道会话信息是否有用

R版本3.4.4(2018-03-15) 平台:x86_64-pc-linux-gnu(64位) 运行在:Ubuntu 18.04.1 LTS

谢谢。

1 个答案:

答案 0 :(得分:0)

最后,我找到了一种解决方案,方法是从函数中删除mutate,而改用$。这是新功能:

extractor <- function(df, pat) {
  df$references <- str_extract(string = description, pattern = pat))
  df
}

然后,我使用purrr :: map将函数应用于列表ref的每个元素,即:

ref %>%
  map(extractor, df = order_lines)

我希望这会在将来对某人有所帮助。