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 <[EMAIL PROTECTED]>
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@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@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.

Reply via email to