2014-02-25 63 views
0

我已經寫的函數採取兩個向量,比方說x和y,我返回值與另一向量: 總和(X),和(y)和總和(X)/總和(Y)。錯誤中的R的函數調用

我寫的代碼是:

> 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」

可有人請指出我的錯誤和Te我該如何糾正它。在此先感謝

+1

一般來說,'FUN'應該只是函數的名字。但無論如何,我不認爲具有兩個參數的函數會按照您認爲的方式工作。 – joran

+0

@noah:是的。總結通過doBy包 – BrownBeast

+0

@joran:我是R的新手,所以很有可能我寫的代碼不是推薦的形式。我想我必須改變我在R編程時的想法和理解代碼 – BrownBeast

回答

0

我不知道這是可能使用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