【问题标题】:Error in .fun(piece, ...) : argument "by" is missing, with no default - plyr package [duplicate].fun(piece, ...) 中的错误:缺少参数“by”,没有默认值 - plyr 包 [重复]
【发布时间】:2018-11-26 21:58:59
【问题描述】:

我正在使用 plyr 包使用数据框 InsectSprays(在 R 基础中)练习 R:

ddply(InsectSprays,.(spray), summarize, sum = sum(count))

Error in .fun(piece, ...) : argument "by" is missing, with no default

我不明白这个错误是什么意思,教程执行了完全相同的命令并且输出如下:

    spray    sum
1    A       174
2    B       184
3    C        25

我还想创建一个新变量(仍然错误):

spraysum <- ddply(InsectSprays,.(spray), summarize, sum = ave(count,FUN = sum)) 
Error in .fun(piece, ...) : argument "by" is missing, with no default

【问题讨论】:

  • 也许你同时加载了dplyr 包?
  • 嗯,但我没有加载 dplyr
  • 然后尝试summarise(s not z)而不是summarize as described here
  • @neilfws 它适用于第一个命令,但最后一个显示“summarise_impl(.data, dots) 中的错误:列总和的长度必须为 1(汇总值),而不是 12”跨度>
  • 第二个命令在我的机器上运行良好,没有错误。与您的问题无关,但我建议学习dplyr 包(也许还有purrr)。从某种意义上说,它们已经取代了plyr,并且非常有用。

标签: r plyr


【解决方案1】:

#cargar la librerias

library(plyr,dplyr)
ddply(InsectSprays,.(spray), summarize  ,sum=sum(count))

结果:

  spray sum
    1     A 174
    2     B 184
    3     C  25
    4     D  59
    5     E  42
    6     F 200

【讨论】:

    【解决方案2】:

    使用summarise 而不是summarize

    下面的函数可以正常工作。

    ddply(InsectSprays,.(spray), summarise, sum = sum(count))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2017-12-09
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多