list - 列表上的 mutate_impl(.data, dots) 错误
问题描述
我有一个数据框,我想添加一个包含匹配模式的列,我存储在一个列表中,如下所示:
这是我的数据框:
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,dots)中的错误:评估错误:'type'没有适用的方法应用于“list”类的对象。'
当我第一次遇到这个问题时,我认为这很容易解决,因为我发现将列表与 dplyr::mutate 一起使用是有问题的。我仍然相信该列表涉及但我不知道如何解决它。
我不知道会话信息在这种情况下是否有用:
R 版本 3.4.4 (2018-03-15) 平台:x86_64-pc-linux-gnu (64-bit) 运行于:Ubuntu 18.04.1 LTS
提前致谢。
解决方案
最后,我通过mutate
从函数中删除并$
改为使用找到了解决方案。这是新功能:
extractor <- function(df, pat) {
df$references <- str_extract(string = description, pattern = pat))
df
}
然后我使用 purrr::map 将该函数应用于我的每个元素 list ref
,即:
ref %>%
map(extractor, df = order_lines)
我希望这对将来的某人有所帮助。
推荐阅读
- typescript - 如何在 vue 组合 api 组件中使用 jest 进行单元测试?
- arduino - 未编译... NarrowBand Twillio T-Mobile
- ios - didRegisterForRemoteNotificationsWithDeviceToken 在 swift 5 中不起作用
- c++ - 通过串口写入字符串(c++ Linux)
- python - Python3:模块'tabula'没有属性'read_pdf'
- node.js - 集群模式下的 PM2,重新启动后不要启动,直到我删除文件夹
- machine-learning - 日期列上的添加是否会导致过度拟合?
- import - 使用colab导入tensorrt时出现错误如何解决
- expo - expo 和 ui-kitten 中的 React-device-info 问题
- node.js - NodeJS(服务器):ReferenceError:当类型:模块时未定义要求