给出了这张表:
| a | b | c |
|---+---+----+
| 3 | 4 | |
| 1 | 2 | |
| 1 | 3 | |
| 2 | 2 | |
我想得到两列a和b的点积,结果应该是(3 * 4)+(1 * 2)+(1 * 3)+(2 * 2),即21。
我不想使用笨拙的公式(B1*B2+C1*C2+D1*D2+E1*E2)
,因为实际上我有一张大桌等着来计算。
我知道emacs的Calc工具有一个" vprod"可以做那些事情的功能,但我不会'知道如何将整列转换为矢量。
任何人都可以告诉我如何完成这项任务,欣赏它!
答案 0 :(得分:3)
在emacs-calc中,2个向量的简单乘积计算点积。
这有效(我把结果放在@6$3
中;也可以省略括号):
| a | b | c |
|---+---+----|
| 3 | 4 | |
| 1 | 2 | |
| 1 | 3 | |
| 2 | 2 | |
|---+---+----|
| | | 21 |
#+TBLFM: @6$3=(@I$1..@II$1)*(@I$2..@II$2)
@I
和@II
从第1个小时延伸到第2个小时。
答案 1 :(得分:0)
这可以使用org-mode中的babel和R
来解决:
#+name: mytable
| a | b | c |
|---+---+----+
| 3 | 4 | |
| 1 | 2 | |
| 1 | 3 | |
| 3 | 2 | |
#+begin_src R :var mytable=mytable
sum(mytable$a * mytable$b)
#+end_src
#+RESULTS:
: 23