# [R] Problems with basic loop

Peter Dalgaard P.Dalgaard at biostat.ku.dk
Fri Jun 20 12:14:56 CEST 2008

```Michael Pearmain wrote:
> I'm having trouble creating a looping variable and i can't see wher ethe
> problem arises from any hep gratfully appreciated
>
> First create a table
>
> x<-table(SURVEY\$n_0,exposed)
>
>> x
>>
>           exposed
>            False True
>   Under 16    24    1
>   16-19       68    9
>   20-24      190   37
>   25-34      555  204
>   35-44      330   87
>   45-54      198   65
>   55-64       67   35
>   65+         10    8
>
> Now ectors to store counts and column proportions
>
>
>> xT<-x[,"True"]
>> xF<-x[,"False"]
>> yT<-x[,"True"]/colSums(x)
>> yF<-x[,"False"]/colSums(x)
>>
>
> check length for dynamic looping
>
>> length(yT)
>>
> [1] 8
>
> now create loop
>
>> for(i in 1:length(yT)){
>>
> + pwr.2p2n.test(2*(asin(sqrt(yT[i]))-asin(sqrt(yF[i]))),n1=xT[i],n2=xF[i])
> + }
> Error in pwr.2p2n.test(2 * (asin(sqrt(yT[i])) - asin(sqrt(yF[i]))), n1 =
> xT[i],  :
>   number of observations in the first group must be at least 2
>
> this confuses me as if i enter the data as values the procedure works?
>
>
Er, the first row "under 16" has a count of 1 in the "True" column and
it confuses you that you get an error saying that you need at least 2??

But what looks _really_ confused is what you are trying to do in the
first place: The p's you are passing to pwr.2p2n are the empirical
relative frequencies of the individual age groups. This sort of reverses
cause and effect (presumably the exposure does not cause middle age) and
it is pretty odd to compare a particular  row in a table with everything
else jumbled together but worse, it is post-hoc power calculation, which
is just a plain Bad Idea (as several people have pointed out before).

--
O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907

```