Emacs 命令计算区域的总和、平均值等

Las*_*ssi 6 emacs

假设我在缓冲区中突出显示了一个文本区域。该区域包含由空格分隔的数字。例如

1 19 23 28 41
Run Code Online (Sandbox Code Playgroud)

是否有一些带有现成交互式命令的包,可以解析来自该区域的数字并进行诸如总和和平均值之类的常见计算,类似于电子表格程序在其状态栏中显示的内容?就像是:

  • M-x sum-region=>112显示在小缓冲区中
  • M-x average-region=>22.4显示在小缓冲区中

或同时进行不同计算的组合命令,或模式行显示。

我想org-mode有这样的电子表格功能,但是如果您还没有使用组织电子表格,它们是否可以轻松使用?是否calc具有在区域上运行的功能?

Las*_*ssi 13

找到了一种非常简单的使用方法calc

  1. 突出显示源缓冲区中的数字
  2. M-x calc-grab-region(或C-x * g
  3. M-x calc-vector-sumM-x calc-vector-meanM-x calc-vector-sdev,等。

C-x *是一个前缀序列,它以多种方式调用 Calc;后面的字母决定了哪一个(例如ginvokes calc-grab-regionrinvokes calc-grab-rectangle)。

也可以通过按键序列调用统计函数。例如:

  • u+: 总和 ( calc-vector-sum)
  • uC: 协方差 ( calc-vector-covariance)
  • uM: 意思是 ( calc-vector-mean)
  • uS: 标准差 ( calc-vector-sdev)
  • vR+: 总和 ( (calc-reduce '(2 calcFunc-add "+")))
  • vR*: 产品 ( (calc-reduce '(2 calcFunc-mul "*")))

Calc 手册中涵盖了这些和其他函数,特别是有关向量/矩阵函数的部分。