如果我在管道中使用重新编码,我会收到错误:
model.variables()
UseMethod中的错误("重新编码"):没有适用于'重新编码的方法。 应用于课程" c的对象(' tbl_df',' tbl',' data.frame')"
如果我将它拉出管道,它可以正常工作:
df <- df %>%
recode(unit, .missing="g")
任何想法为什么?如果可能的话,我想留在管道里。
答案 0 :(得分:19)
dplyr
中的baseR解决方案的等价物是在mutate
内使用它:
df %>%
mutate(unit = recode(unit, .missing="g"))
在recode
之后直接链接%>%
会将数据框作为第一个参数传递给recode
,这与recode
的参数不一致。第一个参数.x
需要是一个向量;与其他dplyr
函数不同,recode
不会使用某些非标准评估魔法将unit
解释为df
中具有该名称的列。设计用于直接与管道一起使用的大多数功能都有一个数据框作为其第一个参数及其输出。您可以详细了解magrittr
以及管道的工作原理here。