我有一个数据框,我想添加一列具有匹配模式的列,并将其存储在列表中,如下所示:
这是我的数据框:
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
谢谢。
答案 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)
我希望这会在将来对某人有所帮助。