J中的数组:从一个索引到另一个索引

问题描述 投票:2回答:1

使用J我试图做类似于下面的例子,由Bernard Legrand(2009)在Mastering Dyalog APL的第128页上显示。我无法找到将此代码直接转换为J,这就是我想要的。

这是一个例子:

BHCodes ← 83 12 12 83 43 66 50 81 12 83 14 66 etc...
BHAmounts ← 609 727 458 469 463 219 431 602 519 317 663 631...

13.3.2 - First Question

我们希望关注一些选定的国家(14,43,50,37和66)并计算其销售总额。让我们首先确定哪些BHCode项是相关的:

      Selected ← 14 43 50 37 66
      BHCodes  ∊ Selected
0 0 0 0 1 1 1 0 0 0 1 1 0 1 0     ⇦ Identifies sales in the selected countries only.

然后我们可以将此过滤器应用于金额,并将其添加:

     (BHCodes ∊ Selected) / BHAmounts
463 219 431 663 631 421
     +/ (BHCodes ∊ Selected) / BHAmounts
2828
filtering lookup j apl dyalog
1个回答
7
投票
+/ (BHCodes e. Selected) # BHAmounts

为了你的目的,APL的是J的e.Member (In)),而APL的/是J的#Copy)。

笔记:

  1. APL的和J的e.并不完全等同,因为APL的在其右边的参数中寻找左边参数中的每个元素,而J的e.寻找每个主要细胞。它的左参数在其正确论证的主要单元格中。
  2. APL的/和J的#并不完全等同,因为APL的/沿着尾轴运行,而J的#沿着引导轴运行。虽然APL确实有,它沿着引导轴运行。有更多的细微差别,但它们在这里并不相关。
© www.soinside.com 2019 - 2024. All rights reserved.