Counterbalancing Part of a List [was Re: ]
Susan Campbell
susanc at andrew.cmu.edu
Wed Nov 6 22:07:00 UTC 2002
I¹m afraid that without looking at the structure of your experiment, I
cannot figure out what the InLine here is supposed to do. As such, I¹ve
written two that do similar things in different contexts, neither one of
which may match your experiment¹s structure (if you¹d like to send me a copy
of the experiment, feel free to do so.). If I were to pick a structure for
an experiment like this, I would use the second structure I explain here.
--The first code sample assumes that you have a block list called BlockList,
and that ³InstructList² is the name of an attribute, which is then used
later to determine what list is nested.
This structure would look something like this:
-SessionProc
-BlockList (1 row, with InstructList as a column)
-TestProc
-InLine1
-List2 (1 row, with [InstructList] in the Nested column)
?InstructList
-Unreferenced E-Objects
-one (the lists referenced above, since list names can¹t be numbers)
-two
-three
and InLine1 would be:
If c.GetAttrib(³Session²) = ³1² Then
BlockList.SetAttrib 1, ³InstructList², ³three²
Else
If (CInt(c.GetAttrib(³Subject²))+CInt(c.GetAttrib(³Session²))) Mod 2 = 0
Then
BlockList.SetAttrib 1, ³InstructList², ³one²
Else
BlockList.SetAttrib 1, ³InstructList², ³two²
End If
End If
(The math here is a hack because I couldn¹t figure out how to get it to
counterbalance only two levels. Basically, if the Subject number and the
Session number add to make an even number, set the list to 1, else set it to
2.)
--The second, different structure assumes that you want to set which level
of a list runs (on a global level). That structure would look like this:
-SessionProc
-InLine2
-InstructList (3 rows)
-TestProc2
and InLine2 would be:
If c.GetAttrib(³Session²) = ³1² Then
Set InstructList.Order = ExplicitOrder (³3²)
InstructList.Reset
Else
If (CInt(c.GetAttrib(³Subject²)) + CInt(c.GetAttrib(³Session²))) Mod 2 =
0 Then
Set InstructList.Order = ExplicitOrder (³1²)
InstructList.Reset
Else
Set InstructList.Order = ExplicitOrder (³2²)
InstructList.Reset
End If
End If
(The numbers here refer to which row of the list runs. For instance, in a
list with three rows, Set List1.Order = ExplicitOrder(³1 2 3²) makes the
list run in sequential order.)
Sorry if this is sort of obscure and technical; I wasn¹t sure exactly what
you were looking for.
Hope this helps,
Susan Campbell
STEP Project
Carnegie Mellon
On 11/6/02 16:00, "Tracy Mitzner" <tracy.mitzner at psych.gatech.edu> wrote:
> hi,
> i'm trying to control the order of my block variable ("InstrictList") based on
> the session number. does anyone know what the correct inline statement would
> be and should the inline be placed before or after the block list? i want the
> 3rd list to always be presented 1st (i.e., session 1) and i want the 1st and
> 2nd lists to be counterbalanced (i.e., sessions 2 and 3). below is the inline
> statement i tried that isn't working...
>
> If "Session" = 1 Then
> c.GetAttrib ("InstructList") = 3
> Else
> c.GetAttrib ("InstructList") = 1 or 2
> End If
>
>
> thanks,
> tracy
>
>
>
>
> Tracy L. Mitzner, Ph.D.
> Post-Doctoral Fellow
> School of Psychology
> Georgia Institute of Technology
> Atlanta, GA 30332-0170
> Tel:404-385-2690
> Fax:404-894-8905
> http://www.prism.gatech.edu/~wr43/hf_aging/index.html
More information about the Eprime
mailing list