r - dplyr::recode 为什么管道会生成错误?

标签 r dplyr pipe recode

如果我在管道中使用重新编码,则会收到错误:

df <-  df %>%
  recode(unit, .missing="g")

Error in UseMethod("recode") : no applicable method for 'recode' applied to an object of class "c('tbl_df', 'tbl', 'data.frame')"

如果我把它从管道中拉出来,它就可以正常工作:

df$unit <- recode(df$unit, .missing="g")

有什么想法吗?如果可能的话,我想留在管道中。

最佳答案

相当于dplyr中的baseR解决方案就是在mutate里面使用它:

df %>%
    mutate(unit = recode(unit, .missing="g"))

直接链接recode之后%>%将把数据帧传递给 recode作为第一个参数,它与 recode 不一致的参数。第一个参数.x需要是一个向量;与其他一些不同dplyr功能recode不使用一些非标准的评估魔法来解释unit作为 df 中具有该名称的列。大多数设计为直接与管道一起使用的函数都将数据帧作为其第一个参数和输出。您可以阅读更多关于 magrittr以及管道的工作原理here .

关于r - dplyr::recode 为什么管道会生成错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49328370/

相关文章:

r - ggplot2 点图与facet_grid 顶部有标签alafacet_wrap (但w/space = "free_x")?

r - 要做很多相关测试

r - 使用 multidplyr 时如何按多列拆分

bash - 如何从 stdout 传递值作为下一个命令的参数

linux - 'set -- $REPLY' 是做什么的?

r - R 中多列的聚合和加权平均值

r - "Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases"做 2-way 重复测量 anova 测试时

R:是否可以在同一列中使用 mutate+lag?

r - 使用来自 dplyr 的 purrr 和 mutate() 将新变量添加到数据框列表中

python - ffmpeg stdin 管道搜索