如果我在管道中使用重新编码,则会收到错误:
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/