たくさんの数の平均や標準偏差取るなら

やっぱLispやね。

てのは、2003年7月16日の続き。 そのときに書いたのはこんな風。

平均点、最高点、最低点を見たくなったので *scratch* バッファにこんな風に書き込んだ。

(let*((p '(1 2 3 4 5 6))
      (n (length p))
      (s (apply '+ p)))
  (format "av=%f, max=%d, min=%d"
	  (/ s (float n)) (apply 'max p) (apply 'min p)))

ひょんなことから今日floating用関数もEmacs-Lispにプリミティブ関数とし て最初っから入ってることに気付いたので標準偏差も求めるのも書いてみた。

(let* ((p '(1 2 3 4 5))
       (n (length p))
       (a (/ (apply '+ p) n))
       (s2 (apply '+ (mapcar '(lambda (i) (expt (- a i) 2)) p))))
  (format "n=%d, av=%f, max=%f, min=%f, stdd=%f"
	  n a (apply 'max p) (apply 'min p) (sqrt (/ s2 (1- n)))))

ああ、標準偏差を求めるためだけにOpenOffic.orgを起動して 10秒ほど待っていたのがアホらしかった。

このくらいになると関数化して別ソースにしといてもいいかな。 ほい、stat.el

使い方としてはktermとかに出てきたたくさんの数値やらを *scratch* バッファにこぴぺする。で、平均やらを求めたい 数値のみを切り取る。M-x kill-rectangle なんかを駆使すると 簡単。たくさんの数値の前後を (stat ) で くくり、閉じ括弧の後ろでC-jをタイプ。

まあ試しにやってみなはれ。そして *scratch* バッファの 偉大さを知りなはれ。そしてLisperになってくだされ。


叱咤激励感想ツッコミはゲストブック

Generated with mkdiary.rb
yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]