On Mar 4, 2015, at 2:02 PM, Typhenn Brichieri-Colombi via R-help wrote: > Hello, > > I am trying to use the following custom function in an aggregatefunction, but > cannot get R to recognize my data. I’ve read the help on function()and on > aggregate() but am unable to solve my problem. How can I get R torecognize > the data inputs for the custom function nested within aggregate()? > > My custom function is found below, as well as the errormessage I get when I > run it on a test data set (I will be using this functionon a much larger > dataset (over 600,000 rows)) > > Thank you for your time and your help! > > d_rule<-function(a,x){ > i<-which(a==max(a)) > out<-ifelse(length(i)==1, x[i], min(x)) > return(out) > } > > a<-c(2,2,1,4,2,5,2,3,4,4) > x<-c(1:10) > g<-c(1,1,2,2,3,3,4,4,5,5) > dat<-as.data.frame(cbind(x,g)) > > test<-aggregate(dat, by=list(g), FUN=d_rule,dat$a, dat$x) > > Error in dat$x : $ operator is invalid for atomic vectors
That message makes no sense to me because it suggests that the 'dat'-object was not a dataframe. I get a different error which I think I can explain: > test<-aggregate(dat, by=list(g), FUN=d_rule,dat$a, dat$x) Error in FUN(X[[1L]], ...) : unused argument (c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) The aggregate.data.frame function is I believe one by one positionally matching the x and g columns to the a-parameter of the d_rule-function and would be attempting to use dat$a (which as far as I can tell doesn't exist and would throw an error if the interpreter ever got to that step) as the match to the d_rule x-parameter, but before it does that, it tries to match dat$x to some parameter in d_rule but because both parameters already have candidate objects matched up, it fails producing the error message I see. (It's also very bad practice to use the construction as.data.frame(cbind(x,g)). It will mangle the results if there are either factor or character variables inside the cbind(). -- David. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. David Winsemius Alameda, CA, USA ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.