[R] getting the by() function to work properly

Petr Pikal petr.pikal at precheza.cz
Mon Oct 23 11:28:17 CEST 2006


Hi

maybe somebody can help you more but in meantime I would recommend to 
debug your function with

debug(f3)

and call by(ss3, sub, f3) to see where exactly comes the error from.

HTH
Petr
 
On 22 Oct 2006 at 22:49, Jancik, Jasper F. wrote:

Date sent:      	Sun, 22 Oct 2006 22:49:23 -0400
From:           	"Jancik, Jasper F." <jfj4094 at uncw.edu>
To:             	<r-help at stat.math.ethz.ch>
Subject:        	[R] getting the by() function to work properly

> Hola everyone,
> 
> Solving this issue would be a huge time saver for analyzing my thesis
> data, so I'll try to be as concise as possible and hope that someone
> can give me a hand.
> 
> I am trying to run a function that I created, which works fine until I
> try to use it with the by function.  That function is listed at the
> bottom (f3) just in case that might be the issue.  Essentially I have
> compiled a large list of data coming from about 30 subjects with 88
> trials each and I am trying to get that function to apply to each
> subject without having to manually attach each subject's data.  The
> entire filename is 'ss2' so when i run >ss2f3=f3(ss2) >ss2f3
> everything is fine.  However when I try to use the by() function:
> >by(ss3, sub, f3) #sub=subject header in the data I get the error
> message: " Error in var(x, na.rm = na.rm) : missing observations in
> cov/cor " There are no missing observations anywhere in the data so
> I'm really confused as to how this is happening.  My professor thought
> it might have something to do with the variance calculations in the
> function, so when we had it remove bad data the function would run,
> however it did not calculate everything and it erroneously gave the
> exact same calculations for each subject.
> 
> I even get the message when I try to manually subset the data e.g.: >
> s2f3=f3(alldata[sub==2,]) "Error in var(x, na.rm = na.rm) : missing
> observations in cov/cor"
> 
> I hope I've provided all the necessary info (the data set is attached
> just in case anyone has the time to make it work), but I'd be glad to
> give more if its needed.  I would really appreciate any suggestions at
> all.  Thanks in advance.
> 
> 
> 
> f3=function(x) {
> + 
> +  twodied=x[died==2,]; 
> +  twosaved=x[saved==2,]; 
> +  hit2=x[saved==2 & choice=="+",]; 
> +  fa2=x [died==2 & choice=="+",];
> +  d2=(qnorm(((nrow(hit2))/(nrow(twosaved))))-qnorm((nrow(fa2))/(nrow(
> +  twodied)))); hitrate=((nrow(hit2))/(nrow(twosaved)));
> +  FArate=((nrow(fa2))/(nrow(twodied)));
> +  zhit2=qnorm(((nrow(hit2))/(nrow(twosaved))));zfa2=qnorm((nrow(fa2))
> +  /(nrow(twodied)));B2= -.5*(zhit2+zfa2); tp2=mean(twosaved$resp);
> +  ta2=mean(twodied$resp); tpsd2=sd(twosaved$resp);
> +  tasd2=sd(twodied$resp); dmj2=((tp2-ta2)/((tasd2+tpsd2)/2));
> +  
> + L=list(d2=d2,B2=B2,dmj2=dmj2,tpsd2=tpsd2,tasd2=tasd2,tp2=tp2,ta2=ta2
> + ,hitrate=hitrate,FArate=FArate) }
> 
> 
> Jasper Jancik
> 910.352.7546
> 
> 
> 

Petr Pikal
petr.pikal at precheza.cz



More information about the R-help mailing list