useMethod中的dplyr -Error(“group_by_”)

时间:2016-03-21 15:00:47

标签: r function dplyr

我需要创建一个具有可选参数的函数,具体取决于是给定还是必须计算频率: 示例表:

如果给出了:

tbl <- data.frame(
    campoALimp = c('uno', "uno1", "Maria", "Mariana", "María", "Mara"),
    freqAbs = c(2, 5, 2, 6, 7, 6))

如果不是:

tbl1 <- data.frame(campoALimp = tbl[rep(1:nrow(tbl), tbl[ , 2]), 1])

我的功能(部分内容)是:

limpio <- function (tabla, campo, campo_conteo){
    tabla <- tabla[nchar(as.character(tabla[, campo])) > 2, ]

    if(missing(campo_conteo))
        { print("calcula freq")
        #detach("package:plyr", unload=TRUE) 
        require(dplyr)
        tabla1<-data.frame(tabla %>% 
            group_by_(campo) %>% summarise(frecuencia = n() )) 
    } else {tabla1 <- tabla
    tabla1$frecuencia <- tabla1[, campo_conteo]}
return(tabla1)
}

首先,我遇到了分离问题(在这种情况下会被注释,但如果我使用它会显示错误:

  

分离错误(“package:plyr”,unload = TRUE):无效“名称”   参数

如果我运行频率表的代码,我没有问题(它只复制原始表)。

limpio(tbl1, 'campoALimp')

但如果我为第二张桌子运行它: 我收到以下错误:

limpio(tbl, 'campoALimp', 'freqAbs')
Error in UseMethod("group_by_") : 
  no applicable method for 'group_by_' applied to an object of class "factor"

我尝试在函数外部编写分离plyr并运行函数,我也遇到了同样的错误。

我尝试在功能之外做同样的事情:

tabla <- tbl1
campo <- 'campoALimp'
tabla1 <- NULL
tabla1 <- data.frame(tabla %>% 
            group_by_(campo) %>% summarise(frecuencia = n() )) 

我得到了正确的结果

  campoALimp frequency
       Mara          6
      Maria          2
      María          7
    Mariana          6
        uno          2
       uno1          5

为什么这不能在函数内部工作? 感谢。

0 个答案:

没有答案