dplyr :: recode为什么管道会产生错误?

时间:2018-03-16 19:40:39

标签: r dplyr pipe recode

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

model.variables()
  

UseMethod中的错误("重新编码"):没有适用于'重新编码的方法。   应用于课程" c的对象(' tbl_df',' tbl',' data.frame')"

如果我将它拉出管道,它可以正常工作:

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

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

1 个答案:

答案 0 :(得分:19)

dplyr中的baseR解决方案的等价物是在mutate内使用它:

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

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