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

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

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

1 19 23 28 41

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

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

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

我认为org-mode电子表格有这样的功能,但如果您还没有使用 org 电子表格,它们是否可以轻松使用?是否calc有针对区域进行操作的功能?

答案1

发现一个非常简单的方法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, ETC。

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 "*"))

这些和其他功能包含在计算手册,特别是关于向量/矩阵函数

答案2

我建议用 Emacs Lisp 来简单计算总和,

(+ 1 19 23 28 41)

然后使用Cx Ce进行求值,其值就会出现在回声区域中。

相关内容