understanding ddply error message

后端 未结 2 422
一生所求
一生所求 2021-02-07 20:25

I am trying to figure out why I am getting an error message when using ddply.

Example data:

data<-data.frame(area=rep(c(\"VA\",\"OC\",\"ES\"),each=4)         


        
2条回答
  •  醉酒成梦
    2021-02-07 20:52

    As stated in Narendra's comment to the question, this error can be caused by loading other packages that have a function called summarize (or summarise) that does not work as the function in plyr. For instance:

    library(plyr)
    library(Hmisc)
    
    ddply(iris, "Species", summarize, mean_sepal_length = mean(Sepal.Length))
    #> Error in .fun(piece, ...) : argument "by" is missing, with no default
    

    One solution is to call the correct function with :: and the correct namespace:

    ddply(iris, "Species", plyr::summarize, mean_sepal_length = mean(Sepal.Length))
    #> Species mean_sepal_length
    #> 1     setosa             5.006
    #> 2 versicolor             5.936
    #> 3  virginica             6.588
    

    Alternatively, one can detach the package that has the wrong function:

    detach(package:Hmisc)
    ddply(iris, "Species", summarize, mean_sepal_length = mean(Sepal.Length))
    #> Species mean_sepal_length
    #> 1     setosa             5.006
    #> 2 versicolor             5.936
    #> 3  virginica             6.588
    

    Finally, if one needs both packages and does not want to bother with ::, one can load them in the other order:

    library(Hmisc)
    library(plyr)
    
    ddply(iris, "Species", summarize, mean_sepal_length = mean(Sepal.Length))
    #> Species mean_sepal_length
    #> 1     setosa             5.006
    #> 2 versicolor             5.936
    #> 3  virginica             6.588
    

提交回复
热议问题