对组织模式电子表格中列中的元素进行有条件计数



我通过组织模式电子表格使用emacs calc,我想计算一列中大于特定值(比如10)的值的数量。

我目前正在使用emacs-calc进行计算,但如果emacs-lisp中有解决方案,那将是非常受欢迎的!

我知道vcount会计算向量中的值的数量,但它会计算该向量中的所有值。如何添加一个条件,以便只计算>10的值?

换句话说,我想要一个mysterious_function,在这种情况下会返回2:

mysterious_function([2,14,11,3,9,1])

如何添加一个条件,以便只计算>10的值?

换句话说,我想要一个mysterious_function,在这种情况下会返回2:

mysterious_function([2,14,10,3,9,1])

呃,你在这个列表中只有一个值大于10——你的意思是>=10吗?

无论如何,我不知道组织模式的电子表格,但以下是如何在Emacs Lisp:中做到这一点

(defun神秘函数(vector)(长度(如果不是#'则移除(lambda(n)(>=n 10)(追加向量nil)))

受choroba的建议启发,我使用emacs-calc找到了一个解决方案。

vcount(map(<if(gt(#1,10), 1, [])>, [15,2,5,13]))

因此,对于处理组织模式电子表格中的列,我可以这样做,例如:

vcount(map(<if(gt(#1,10), 1, [])>, @I..@II))

map函数用于将一个函数(在这种情况下是匿名函数)应用于向量的每个元素。如果元素大于10,则我们放置1,否则为空向量。

您还可以创建一个包含的附加列

if($2>10,1,string(""))

然后简单地在此列上应用vcount

由于逻辑运算为true产生1,为false产生0,我们可以简单地对测试求和:

vsum(map(<gt(#1,10)>,@I..@II))

最新更新