如果我在管道中使用recode,则会收到错误消息:

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



UseMethod(“ recode”)中的错误:“ recode”没有适用的方法
应用于类“ 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

09-10 01:56