Calling the value of a higher-level list object?

Matthew matthewdwood82 at gmail.com
Sun Jan 23 22:56:34 UTC 2011


Hi Liw,

Thanks for your response.  One important thing I forgot to mention is
that all my problems are in a single list, along with their answers
and misleading hints.  Looks like so:

Weight	Nested	Procedure	Word1	Word2	Word3	Answer	Mislead
1		RATProc	rope	truck	line	tow	pickup
1		RATProc	teeth	arrest	start	false	kick
...

This was done so that the subset of hints that participants see can be
served up on-the-fly (depending on their performance for the first
round of problems).  I am doing this currently with a couple inline
objects and a couple arrays that store information for incorrect
problems and unseen problems.  Then one inline randomly picks 1/2 of
unsolved and 1/2 of unseen problems to serve up hint words for in the
LDT, and a second inline builds the list of RAT problems to be
presented in the second session.

I posed this question to PST web support, and it turns out the work-
around is idiot simple.  They suggested adding an attribute in the
list that determines BS condition called ProcedureName, and give it
the same name at each level as the procedure for that level.  Then you
can call c.GetAttrib "ProcedureName" instead of having to monkey with
any of the (more complicated) FactorSpace commands.  I haven't
finished testing yet, but it seems to be getting the job done.

Thanks again,
-Matt


On Jan 22, 1:05 pm, liwenna <liwe... at gmail.com> wrote:
> Ok.... let's see if I get your problem...
>
> You kinda want subjects to be assigned to one of two conditions,
> answer or mislead. You write that you want to assign them to different
> procs, keep the objects the same but the hint words (that are stored
> in a list) should vary between the two conditions? So basically not
> two procs, but one proc, yet with different words used.
>
> Because I am not sure what you look for exactly I'll not give you a
> clear solution but simply blurt out some thoughts on e-prime mechanics
> "tricks". In general I think you should approach this problem the
> other way around: instead of having a lower order list 'peek back' to
> a higher order list it's probably more sensible to have a higher list
> decide the lower order course for each run of the program.
>
> 1: you could have a list with two levels that have the same procedure
> nested into it but then nest a different list with words (i.e.
> answerwordlist & misleadwordlist) into each level so that when the
> procedure is ran from level 1 the words in the one list are called for
> while when running the same procedure from the second level the words
> in the other list will be used. This way you can alternate
> conditions.. .but it's less suitable for between subjects designs as
> then you'll have to force the program to only use one of the levels
> for each subject.
>
> 2: you could assign a condition to each subject at the start of the
> experiment and then have the program run in a certain order based on
> that attribute (also see the thread: Change the SlideObject Correct
> Response based on Attribute ). Start the experiment with an inline
> with the following code that will assign version A (or call it answer
> if you like) to all odd subjectnumbers and B (mislead) to all even
> subjectnumbers.
>      if c.getattrib ("subject") mod 2 = 1 then c.setattrib "version",
> "A"
>      if c.getattrib ("subject") mod 2 = 0 then c.setattrib "version",
> "B"
> Obviously other criteria for assigning one version or another could be
> used.
> Built the procedure for one run of the experiment and then rebuilt it
> again in the same experimentprocedure. So: start with a list that
> contains the procedure and all the lower lists for a run of the
> 'answer variant' of the task and then after that create another list
> containing everything you need for the mislead variant. You can
> actually use the same trialprocedures and all, just change the words
> in the lists that are used as hints. Don't copy/paste the first build
> of the task but create new lists and type into that the name of the
> previously created procedure. This way the same procedure will be
> used. If you copy/paste stuff (lists/procedures) they'll become
> separate objects and any changes you might want to make would have to
> be made twice. Unless of course you after all do need different
> objects in the two versions.
>
> Now.. if a subject is assigned the answer condition it should only be
> taken trough the first part of the experiment... so inbetween the
> 'main lists' for both task variants add an inline that reads: "goto
> endlabel" and place a label after the second part of the experiment
> and call it endlabel. If the program is finished with the first list
> and encounters that inline, it will skip to the endlabel and therefore
> pass by the second part of the experiment. On other runs you need the
> first part to be skipped and only the second part to be run so place
> an inline before the first mainlist that reads: if c.getattrib
> ("version") = "B" then goto blabel. Place a label called blabel
> inbetween the two lists (but after the inline that read goto
> endlabel). Now for those subjects that get assigned version B the
> program will skip the first list (it goes to blabel) and run the
> second list.
>
> 3. Another way, not my favourite, is to just mess with the lists...
> you can create two lists of hintwords (one answerlist and one
> misleadlist) and then delete them both so that they end up in the
> unreferenced objects 'bin'. Assign a version to each subject as
> described above and based on that attribute have the program use on of
> the two unreferenced list using something like the following code: ""
> If c.getattrib ("version") = "A" then triallistist.setattrib(1,
> "nested")="answerlist" if c.getattrib ("version") = "B" then
> triallist.setattrib(1, "nested")="misleadlist" end if "" This code
> should be placed on the experimentproc before the triallist. I am not
> entirely sure about the above thing though... something in the back of
> my head tells me that the above codeformat might not work for the
> attributes nested and procedure of a list, but have no e-prime to try
> it with right now.
>
> Undoubtedly there are many more ways to do these kind of things, but
> these are the first that came to mind.
>
> Let me know if these are of any help or if you're problem actually is
> different from what I thought.
>
> best,
>
> liw
>
> On Jan 20, 4:14 pm, Matthew <matthewdwoo... at gmail.com> wrote:
>
>
>
>
>
>
>
> > Hi guys,
>
> > I've trolled the forums here & at PST for an answer to this problem, w/
> > o much help.  I have an experiment where participants work on a series
> > of remote associate problems (RAT for short), complete some lexical
> > decision trials (LDT), and then work on more remote associates (both
> > unsolved problems from 1st session and new, unseen problems).  They
> > are trained on how to do both of these things at the start of the
> > experiment.
>
> > Now my problem.  The lexical decision task includes some hints to the
> > remote associate problems that were not solved in the first RAT
> > session.  These can be either solutions for the RAT, OR words that are
> > associates of 2+ problem words (but are not solutions).  Right now, I
> > have this set up as a between-subjects comparison, and am trying to
> > use a high-level list that assigns participants to one of two Procs
> > that correspond to these conditions.  I would like to keep objects in
> > both of these Procs the same, and use an InLine to look at what high-
> > level proc I'm in, and then select the appropriate hint word for an
> > unsolved item.  A snippit of my (broken) code follows.  Any
> > suggestions?
>
> > Thanks,
> > -Matt
> > ----------
>
> > ' A page out of E-Basic HELP - FactorSpace.GetProc (method)
> > Dim HintCondition as String
> > Dim theCellSpec as CellSpec
> > Set theCellSpec = HintCond.Order.GetNext()
> > HintCondition = CStr(HintCond.GetProc(theCellSpec))
> > ...
> > If HintCondition = "AnswerProc" then
> >      For i = 1 to IncorrectPresentNum
> >      ...{add solution hints to LexicalDecision List for 1/2 of
> > unsolved RATs}...
> >      Next i
> > ElseIf HintCondition = "MisleadProc" then
> >      For i = 1 to IncorrectPresentNum
> >      ...{add misleading hints to LexicalDecision List for 1/2 of
> > unsolved RATs}...
> >      Next i
> > EndIf

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.



More information about the Eprime mailing list