【问题标题】:dplyr::recode Why does pipe generate error?dplyr::recode 为什么管道会产生错误?
【发布时间】:2018-08-25 23:18:15
【问题描述】:

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

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

UseMethod("recode") 中的错误:'recode' 没有适用的方法 应用于“c('tbl_df', 'tbl', 'data.frame')”类的对象

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

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

任何想法为什么?如果可能的话,我想留在管道中。

【问题讨论】:

    标签: r dplyr pipe recode


    【解决方案1】:

    dplyr 中的 baseR 解决方案的等效方法是在 mutate 内部使用它:

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

    %&gt;%之后直接链接recode会将数据帧作为第一个参数传递给recode,这与recode的参数不符。第一个参数.x 需要是一个向量;与其他一些dplyr 函数不同,recode 不使用一些非标准的求值魔法将unit 解释为df 中具有该名称的列。大多数设计用于直接与管道一起使用的函数都有一个数据框作为它们的第一个参数和它们的输出。您可以阅读更多关于 magrittr 以及管道如何工作的信息 here

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多