【问题标题】:Error in function call in RR中的函数调用错误
【发布时间】:2014-02-25 22:26:06
【问题描述】:

我编写了一个函数来获取两个向量,比如 x 和 y,我正在返回另一个带有值的向量: sum(x)、sum(y) 和 sum(x)/sum(y)。

我写的代码是:

> anotherFunction<-function(x,y){
+ return (c(sum(x),sum(y),(sum(x)/sum(y))))
+ }

我使用这个函数如下:

summaryBy(Age~age.groups,data=testdata,FUN=anotherFunction(testdata$Clicks,testdata$Impressions))

我遇到以下错误:

FUN(X[[1L]], ...) 中的错误:找不到函数“currFUN”

谁能指出我的错误并告诉我如何纠正它。提前致谢

【问题讨论】:

  • 一般来说FUN应该只是函数名。但无论如何,我不认为一个有两个参数的函数会像你想象的那样工作。
  • @noah:是的。 summaryBy 来自 doBy 包
  • @joran :我是 R 的新手,所以我写的代码很有可能不是推荐的形式。我想我在用 R 编程时必须改变我思考和理解代码的方式
  • 我不太使用 doBy,但我相信 summaryBy 旨在为公式左侧的每个变量生成摘要,按变量分组公式的右侧。您可能会发现来自 plyrddply 更直观一些。

标签: r


【解决方案1】:

由于 cmets 中提到的原因,我不确定使用 summaryBy 是否可行,但按照建议使用 plyr 非常简单:

library(plyr)

anotherFunction<-function(x, y){
    return (c(sum.x = sum(x),
              sum.y = sum(y),
              ratio = (sum(x)/sum(y))))
}
## test data
testdata <- data.frame( Age = sample(18:30, 15, replace=TRUE),
                  Clicks = sample(10:100, 15, replace = TRUE),
                  Impressions = sample(10:100, 15, replace = TRUE))
testdata$age.groups <- as.numeric(cut(dat$Age, breaks = 3))

mySummary <- ddply(testdata, .(age.groups), .fun = function(x) {
    anotherFunction(x$Clicks, x$Impressions) })

你会得到这样的东西:

> mySummary
  age.groups sum.x sum.y     ratio
1          1   326   350 0.9314286
2          2   130   202 0.6435644
3          3   293   416 0.7043269

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多