Array Lookup: Difference between revisions

From NARS2000
Jump to navigationJump to search
(Created page with "<table border="1" cellpadding="5" cellspacing="0" rules="none" summary=""> <tr> <td> <table border="0" cellpadding="5" cellspacing="0" summary=""> <tr> <td val...")
 
No edit summary
Line 19: Line 19:
</tr>
</tr>
<tr>
<tr>
   <td>For matrices, the result is equivalent to <apll>(⊂[2] L)⍳⊂[2] R</apll> which encapsulates a common idiom in one symbol.</td>
   <td>For matrices, the result is equivalent to <apll>(⊂[2] L)⍳⊂[2] R</apll> (lookup the rows of one array in another) which encapsulates a common idiom in one symbol.</td>
</tr>
</tr>
<tr>
<tr>
   <td>For higher rank arrays, the arguments are enclosed to become vectors of subarrays and then the usual lookup produces the final result.</td>
   <td>For higher rank arrays, the arguments are enclosed to become vectors of subarrays and then the usual lookup produces the final result.</td>
</tr>
<tr>
  <td>This function is sensitive to both <apll>⎕IO</apll> and <apll>⎕CT</apll>.</td>
</tr>
</tr>
</table>
</table>
Line 41: Line 44:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L⍸R<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L⍸R<br />
4 7 5</apll>
4 7 5</apll>
<p>This function was suggested by the language designers of Dyalog APL.</p>

Revision as of 10:23, 26 May 2013

Z←L⍸R returns a simple integer vector identical to (⊂⍤(¯1+⍴⍴L) L)⍳⊂⍤(¯1+⍴⍴L) R.
L and R are arbitrary arrays.
Z is an integer vector of length 1↑⍴R.
For matrices, the result is equivalent to (⊂[2] L)⍳⊂[2] R (lookup the rows of one array in another) which encapsulates a common idiom in one symbol.
For higher rank arrays, the arguments are enclosed to become vectors of subarrays and then the usual lookup produces the final result.
This function is sensitive to both ⎕IO and ⎕CT.


For example, in origin-1

      ⎕←L←6 4⍴'DinaDickJohnJaneSue Mary'
Dina
Dick
John
Jane
Sue
Mary
      ⎕←R←3 4⍴'JaneBob Sue '
Jane
Bob
Sue
      L⍸R
4 7 5

This function was suggested by the language designers of Dyalog APL.