how to... make a 'for 0 to x' variable that can insert digits IN an attribute name?

liwenna liwenna at gmail.com
Wed Nov 4 20:52:32 UTC 2009


Short question:
In the piece of code below: how do I implement a variable that
replaces the digits 1-3 in the attribute names 'restid1' - 'restid3'
so that I can shorter the code to a single line (using an additional
'for 0 to 2' variable for the (randompos(x)) part) ?

**************************************
for m = 1 to 4

triallist.SetAttrib m, "restid1", randomlist(randompos(0))
triallist.SetAttrib m, "restid2", randomlist(randompos(1))
triallist.SetAttrib m, "restid3", randomlist(randompos(2))

randomizearray randompos

next m
***************************************

Long explanation:
Ok.... So... I have this habit of writing enormous inlines because I
am generally to lazy or not in the mood to figure out/learn how to
shorten them....  I decided that I am gonna break this habit and have
choosen a nice litle experiment to do this with. However: I am stuck
now. My hope is that someone here knows off hand what lines I need and
is able to drop me a line.

In the final experiment each display holds 16 positions which will be
filled with one targetstimulus and 15 distractorstimuli. There are 16
possible targetstimuli which will each have to appear in one of the 16
possible positions (a 4x4 grid, 16 locations x16 targetstimuli = 256
trials). The identity of the targetstimulus decides which 15 stimuli
should be used as distractorstimuli and I like to have the location of
each of the distractorstimuli randomized... Unfortunately this means
that for each trial there are 15! possible arrangements of the
distractorstimuli (1 307 674 368 000). I don't like
pseudorandomizations that well so I took up the challenge and actually
got quite far so far. For obvious reasons I am working the whole thing
out with a smaller number of positions: 4 (2x2 grid).

This is what I got now: for target ID 1 a list with the 15
distractorstimuli for this target is loaded from a textfile into an
array and randomized. A second array holds the numbers 1-15 which
corresponds with locations 1-15. For each level of the triallist (m)
the randomized distractorstimuli are randomly loaded into attributes
called "restid1" up to "restid3" (4 locations, 1 holds the target).
When a level is filled, the randompos array is rerandomized so that
for the next level each distractorstimulus is loaded into a different
restid-attribute. The piece of code shown below deals with the first 4
levels (target ID 1), the code will have to repeat for the next 4
levels but then load id2restids.txt instead (containing
distractorstimuli for target ID 2), etc etc. As you can see this
inline will still become rather bulky so here's the question again:
can I shorten the 3 lines that fill the triallist-levels to 1 line by
using another 'for 1 to 3' attribute (one of those mysterious %_ & #
perhaps?) that can actually be used IN an attribute name?

***********************************************
for m = 1 to 4

Open "id1restids.txt" For Input As #1
For n = 0 To 2
Input #1, randomlist(n)
Next n
Close #1

randomizearray randomlist

for q = 0 to 2
randompos(q) = q
next q

randomizearray randompos

triallist.SetAttrib m, "restid1", randomlist(randompos(0))
triallist.SetAttrib m, "restid2", randomlist(randompos(1))
triallist.SetAttrib m, "restid3", randomlist(randompos(2))

randomizearray randompos

next m
*******************************************


I've checked the guides, checked the e-primer, searching all over the
place for a piece of code that I could steal the trick from, but to no
avail so far. What certainly doesn't help is that I so far never quite
got the deal with the & % _ crf things.... (that's probably
embarrassing but true :p )

I hope someone knows a nice solution for me.

Best regards,

liw

--~--~---------~--~----~------------~-------~--~----~
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