什么是一种更简洁的方法来计算元素在J列表中出现的次数?

Gre*_*ley 3 j

这是我做过的(可能是天真的)方式:

count =: 4 : '# (#~ =&x) y'"1 0 1

换句话说,如果我说4 count 3 4 4 3 4 7 9结果是3,因为4在给定列表中发生了3次.

这很好用,但我想知道J是否提供了一些更简洁的方法来表达这一点.

MPe*_*ier 5

当我这样做时,知道我只会有一个列表而不是矩阵,我使用:

count =: 4 : '+/x=y'
Run Code Online (Sandbox Code Playgroud)

或者对于列表中的多个搜索:

count =: 4 : '+/x=y'"0 1
Run Code Online (Sandbox Code Playgroud)

您的方法仅复制等于x的元素,然后计算结果.总结相等的是一个较少的操作.