elisp 有没有数学函数库

平常会把emacs当成计算器用,输入 ielm 进入交互模式进行一些计算。

用的最多的是计算两个值的同比增长,每次到了汇报节点都会大批量计算,例如下面

问题在于,这样要敲很多代码,想知道有没有内置的函数快捷计算,我只搜到elisp内置了一些基本的函数,我想要一些统计学上常用的函数

https://www.gnu.org/software/emacs/manual/html_node/elisp/Math-Functions.html

有没有现成的库可以用呢?(我自己也可以写,但是如果有现成的库对我来说更友好)

1 个赞

没有,但是你可以org-babel调R,或者用ess的r inferior

或者退而求py,使用ipython。

The b % (calc-percent-change) [relch] command calculates the percentage change from one number to another. For example, 40 RET 50 b % produces the answer ‘25%’, since 50 is 25% larger than 40. A negative result represents a decrease: 50 RET 40 b % produces ‘-20%’, since 40 is 20% smaller than 50. (The answers are different in magnitude because, in the first case, we’re increasing by 25% of 40, but in the second case, we’re decreasing by 20% of 50.) The effect of 40 RET 50 b % is to compute ‘(50-40)/40’, converting the answer to percentage form as if by c %.

b % ( calc-percent-change ) [ relch ] 命令计算从一个数字到另一个数字的百分比变化。例如, 40 RET 50 b % 产生答案 ‘ 25% ’,因为 50 比 40 大 25%。负结果表示减少: 50 RET 40 b % 产生 ‘ -20% ’,因为 40 比 50 小 20%。(答案的幅度不同,因为在第一种情况下,我们增加了 40 的 25%,但在第二种情况下,我们减少了 50 的 20%。) 40 RET 50 b % 的效果是计算 ‘ (50-40)/40 ’,将答案转换为百分比形式,就像通过 c % 一样。

GNU Emacs Calc Manual https://www.gnu.org/software/emacs/manual/html_mono/calc.html#Financial-Functions

我试了下:calc 然后输入 1203722 RET 254322 b %

结果是

可以用 calc,楼上也提到了。calc 自带一个蛮大的函数库。

题外话,就主题里提到的需求本身来说,也可以直接用 calc:calc 本身支持矢量运算,还可以把数据 grab 到 calc buffer 里。

举个例子:假如 buffer 里有两行数字

Old: 120372 120373 120374
New: 254322 254321 254320

可以先选中第一行的数字按 C-x * g,再在第二行的数字上 grab,calc buffer 里就会出现:

2:  [120372, 120373, 120374]
1:  [254322, 254321, 254320]

即栈上有两个 vector。已知 b % 是单元素上的 change,这里就可以按 V M b %vector-mapped b % 运算。得到结果:

1:  [1.11280031901, 1.11277445939, 1.1127486002]

算完后按一下 y 把结果贴回原来的 buffer。q 收工~

4 个赞

哇, calc 功能这么多