Re: [R] help needed on function call

From: rmail ye <rmail.ye_at_gmail.com>
Date: Tue, 04 Mar 2008 11:26:39 -0700

Thanks for your help.

By adding { eval(substitute(var)) }, it works for me. Patrick advise me not attaching a dataset in a function. I will try to avoid this.

Best,
Sean

On Tue, Mar 4, 2008 at 11:15 AM, Erik Iverson <iverson_at_biostat.wisc.edu> wrote:

> It isn't clear to me what output you would like to have by your
> description.
>
> However, there certainly is a clearer way of getting there than your
> functions. If you better define what output you'd like to have (i.e.,
> what your table should look like), I may be able to offer some
> suggestions.
>
> You may want to look at ?prop.table to see if it helps you though.
>
> Best,
> Erik Iverson
>
> rmail ye wrote:
> > Hi there,
> >
> > I am confused about fucntion call. After defining a function, I called
> it
> > within another function.
> >
> > dt<-cars; #a copy of R internal dataset "cars" created;
> > dt$cat1<-ifelse(dt$speed<20,0,1);
> > dt$ind<-ifelse(dt$speed<15,1,2); #group variable;
> >
> > freqtot <- function(data,var){
> > attach(data,warn.conflicts=FALSE)
> > x1 <- data.frame(table(var))
> > names(x1) <- c("Group","cnt")
> > x1$pct<-round(x1$cnt/nrow(data)*100,1)
> > return(x1)
> > }
> >
> > freqgrp <- function(dt,var,grp,grpcnt){
> > xx<-freqtot(dt,var)
> > for(i in 1:grpcnt) {
> > assign(paste("x",i,sep=""),subset(dt,grp==i))
> > df<-eval(parse(text=paste("x",i,sep="")))
> > yy <- freqtot(df,cat1);
> >
> >
> names(yy)<-c("Group",paste("grp_",i,"_cnt",sep=""),paste("grp_",i,"_pct",sep=""))
> > xx<-merge(xx,yy,by.x="Group",all=TRUE)
> > }
> > print(xx)
> > }
> >
> > The output is
> >> xyz <- freqgrp(dt,cat1,ind,2)
> > Group cnt pct grp_1_cnt grp_1_pct grp_2_cnt grp_2_pct
> > 1 0 38 76 23 100 15 55.6
> > 2 1 12 24 NA NA 12 44.4
> > But if I substitue the variable "cat1" in line {yy <- freqtot(df,cat1)},
> it
> > doesn't output the correct results.
> >
> > The motivation to write the 2 functions is putting the count and
> percentage
> > for overall & each individual group together, and write the data frame
> into
> > a .csv file.
> >
> > Thanks,
> > Sean
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help_at_r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> > and provide commented, minimal, self-contained, reproducible code.
>

        [[alternative HTML version deleted]]



R-help_at_r-project.org mailing list
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. Received on Tue 04 Mar 2008 - 18:29:04 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 04 Mar 2008 - 18:30:19 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive