Hatena::ブログ(Diary)

もうカツ丼でいいよな このページをアンテナに追加 RSSフィード

2009 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 12 |
2012 | 02 | 03 | 04 | 05 | 06 | 10 | 11 | 12 |
2013 | 01 | 02 | 04 | 06 |
2014 | 06 |

2013-04-14

[][] WordVBAでのマクロショートカット割り当て(Emacsキーバインド暫定版) 23:49  WordVBAでのマクロのショートカット割り当て(Emacs風キーバインド暫定版) - もうカツ丼でいいよな を含むブックマーク  WordVBAでのマクロのショートカット割り当て(Emacs風キーバインド暫定版) - もうカツ丼でいいよな のブックマークコメント

Wordの場合はApplication.KeyBindings.Addメソッドを使ってショートカットキーの割り当てができる。

Application.Keybindings.Add _
    KeyCategory:=wdKeyCategoryCommand, _
    Command:="Command", _
    KeyCode:="KeyCode"

あまり良く読んでないのでKeyCategory引数の意味とかしっかり理解していないが、"Command"には割り当てたいマクロの名前を文字列として、"KeyCode"には割り当てたいキーのーキーコードを数値として与える。キーコードはwdKeyAやwdKeyControlなどの名前の定数が用意されているので、それを足しあわせて作る。

割り当てたショートカットを解除するには次のようにする。

With Application.FindKey("KeyCode")
    .Disable
    .Clear
End With

解除したいショートカットキーのキーコードを"KeyCode"に指定する。

これを利用すると、Wordで比較的簡単にEmacsキーバインドを再現できる。

ちょっとだけやってみた。

'' ----- Emacsモードの有効化と無効化 ---------------------
Sub EnableEmacsMode()
    Call AddKeyBindings("ForwardChar", wdKeyControl + wdKeyF)
    Call AddKeyBindings("BackwardChar", wdKeyControl + wdKeyB)
    Call AddKeyBindings("NextLine", wdKeyControl + wdKeyN)
    Call AddKeyBindings("PreviousLine", wdKeyControl + wdKeyP)
    Call AddKeyBindings("BeginningOfLine", wdKeyControl + wdKeyA)
    Call AddKeyBindings("EndOfLine", wdKeyControl + wdKeyE)
End Sub

Sub DisableEmacsMode()
    Call DeleteKeyBindings(wdKeyControl + wdKeyF)
    Call DeleteKeyBindings(wdKeyControl + wdKeyB)
    Call DeleteKeyBindings(wdKeyControl + wdKeyN)
    Call DeleteKeyBindings(wdKeyControl + wdKeyP)
    Call DeleteKeyBindings(wdKeyControl + wdKeyA)
    Call DeleteKeyBindings(wdKeyControl + wdKeyE)
End Sub

Sub AddKeyBindings(Command As String, KeyCode As Long)
    '' キーバインド登録
    Application.KeyBindings.Add _
        KeyCategory:=wdKeyCategoryCommand, _
        Command:=Command, KeyCode:=KeyCode
End Sub

Sub DeleteKeyBindings(KeyCode As Long)
    '' キーバインド登録解除
    With Application.FindKey(KeyCode)
        .Disable: .Clear
    End With
End Sub


'' ------ キーバインドマクロ定義 ------------------------
Sub ForwardChar() '' カーソル前移動
    Selection.MoveRight unit:=wdCharacter, Count:=1
End Sub
Sub BackwardChar() '' カーソル後ろ移動
    Selection.MoveLeft unit:=wdCharacter, Count:=1
End Sub
Sub NextLine() '' カーソル下移動
    Selection.MoveDown unit:=wdLine, Count:=1
End Sub
Sub PreviousLine() '' カーソル上移動
    Selection.MoveUp unit:=wdLine, Count:=1
End Sub
Sub BeginningOfLine() '' 行頭へ
    Selection.HomeKey unit:=wdLine
End Sub
Sub EndOfLine() '' 行末へ
    Selection.EndKey unit:=wdLine
End Sub

https://gist.github.com/nozma/5383099

現在のファイルなりNormal.dotmなりにインポートしてEnableEmacsModeを実行すればEmacs風のキーバインドに(カーソル移動だけだが)なり、DisableEmacsModeを実行すれば通常の状態に戻る。

2ストロークについては ExcelでEmacsライクなキーバインドを使う - もうカツ丼でいいよなでやったようにC-xでショートカットが切り替わるようにすれば良いと思う。

とりあえず今日は眠いので残りはいずれ。もしくは誰かやっといて。

2012-03-14

[][] 農業気象学会若手研究者の会のOS統計ソフトウェアR入門」を見てきました 00:37  農業気象学会若手研究者の会のOS「統計ソフトウェアR入門」を見てきました - もうカツ丼でいいよな を含むブックマーク  農業気象学会若手研究者の会のOS「統計ソフトウェアR入門」を見てきました - もうカツ丼でいいよな のブックマークコメント

3/14に開催された農業気象学会の若手の会でRの勉強会が開催されるという話を大学の先生から伝え聞いたので、話を聞きに大阪府立大まで行ってきました。

Rは何というか裏から穴掘って内部へ入ってる感じがあるので入門というとちょっと今更感がなきにしもあらずですが、自分が入門するというより他の人を入門させるにはどうしたらいいのかという点が知りたくて参加しました。

資料などについて

現時点(3/14)では若手の会のトップページに資料やスクリプトへのリンクがあります。トップなのでそのうち変わるかもしれません。

三中信宏さんの資料は

平田竜一さんの資料は

にありますがいつまであるのかはよく分かりません。

以下、OSのメモです。

「Rが拓く新しい統計的データ解析への道」(三中信宏氏 (農業環境技術研究所/東京大学) )

イントロ

我々はRをつかって何をすべきか?

パラメトリック vs ノンパラから「計算機統計学」へ

データ解析をコンピュータの上で。今まで気づけなかった部分を拾い上げる。

データを手に入れたら

統計=計算ではない。

まずはデータの内容を見る必要がある。

データがあるなら、データをまず見なければならない。

→視覚化の必要性

グラフを作る→データの特徴を見抜く→どう解析するか?

Rを使ってみる

Rはコマンドラインベースなのでコマンドを入力する必要があるが、CUIベースの作業は辛い、というわけでRコマンダー。

Rの起動

Rguiを起動

Rコマンダーの起動
> library(Rcmdr)

テストデータのロード

データ>パッケージ内のデータ>アタッチされたパッケージからデータセットを読み込む>irisを指定

(irisデータセットの説明)

「データセットを表示」で中身を表示

箱ひげ図の作成

グラフ>箱ひげ図>Petal.Length

層別でSpeciesを選択

「OK」で描画

(箱ひげ図の説明)

ドットチャートの作成

(Species毎のヒストグラム作成)

箱ひげ図やドットチャートで視覚化することでデータの分布の中央などが見えてくる。

多変量で見てみる(散布図行列)

グラフ>散布図行列>

変数を全部選択

散布図行列を描く事で変量間の関係が見えてくる。

条件付き散布図

説明変数:Petal.Length

目的変数:Petal.Width

条件:Species

グループ:Species

種別に散布図を描画する。

3Dグラフの作成(3次元散布図)

グラフ>3次元散布図

「線形最小自乗」は無い方が見やすいのでとりあえずチェックしない。

なぜRコマンダー?

まずデータの中身を見るためのツールとして使いやすい。

手元にあるデータ(Excel形式)をどう使うか?

Windows: データ>データのインポートExcelまたは…

Macは無いがコピペでいける。

  1. sample2.xlsを開く(2要因乱塊法の実験計画のデータ)
  2. クリップボードにコピー
  3. データ>データのインポートクリップボード
  4. 「データファイルの場所」を「クリップボード」に
  5. OKで読み込み

RStudioの使い方

RStudioの概要

Rでプログラミングをする際の補助ツール

説明

左ウィンドウはRが起動しているので直接入力もできる。

質疑応答
  • Q. たくさんのデータについて定型の作業を繰り返すのはR Commanderでは面倒そうだが…
  • A. R Commanderを使わずプログラムを書けば効率的に処理できる。
  • Q2. bashなどシェルからの呼び出しも可能ということか。
  • A2. 可能

所感

グラフが出てきたりする度に周囲の人が「おおー」と言っているのが印象的でした。Excel批判も効果的にキマっていたと思います。

自分が他人に説明しようとすると割と細かいところから積み上げるように順々にやってしまいがちなんですが、それよりも最初にプロットとか視覚的なものを見せて興味を引きつけるのは大切だなと感じました。

思い出してみれば自分も最初はRコマンダーばかり使っていました。

RStudioは出力や変数の状態が確認しやすくて良いと思いました。ESSから乗り換えることはないと思いますが、他人への説明用に使い方を一通り把握しておきたいところです。

「Rを用いた気象データ解析の基礎 〜Excelより便利でC言語より気軽な大量データ処理のためのフリーソフトウェアの紹介〜 (平田竜一氏 (国立環境研究所))

イントロ

RはCとExcelの中間くらいの感じ。

今日は農業気象学の解析に使ってみる例を紹介したい。

内容:メリット/デメリットの紹介、複雑な解析の例、処理とグラフ作成の実演。

Excelについて
  • デメリット
    • ファイルの重さ
    • 巨大データ処理が苦手
    • バージョン変更に伴う仕様の変更
    • 自動処理の難しさ(VBAは敷居が高い)
    • グラフが汚い(Excelできれいなグラフを描ける人はすごい!!!)
    • データの見通しの悪さ
  • メリット
    • 直感的
    • 手軽
    • ユーザー数の多さ
    • 会社でも使える
プログラミング言語(Cなど)について
  • デメリット
    • 敷居の高さ
    • グラフ作成が手軽で無い
    • 大半の関数は自作しなければいけない
    • デバッグ
  • メリット
    • 柔軟性が高い
    • 計測機器の制御に使える
    • 複雑な処理ができる、早い
    • 超巨大データも扱える
    • 本、Webにリソース豊富
    • SEになるなら有利
Rについて
Rでこんなことができる

1年間のフラックスデータから昼間のデータだけを抜き出して毎日のグラフを描ける。

複雑なモデル式への当てはめが容易である。

演習(R Consoleを使って)
ベクトルを使った演算

Rはベクトル演算が得意。

c(1, 2, 3)
c(1, 2, 3) + c(4, 5, 6)
変数の使い方
  • 代入操作
a <- c(1, 2, 3)  ## パックマン?
a
b <- c(4, 5, 6)
a + b
c <- a + b
関数の使い方
mean(a)
sum(a)
グラフの描き方
plot(a, b)

plot()はグラフを描く関数。aの部分がx軸、bの部分がy軸。

d <- seq(0, 2*pi, length = 20)
d
plot(d, sin(d))
plot(d, sin(d), type="l")   ## 線グラフも指定できる

seq()は等差級数ベクトルを作成する関数

解析の実例

生データから簡単な計算をして1週間ごとのグラフを描く。

5分値データを30分データに直してグラフを描く。

所感

昔大学とかで初心者向けに勉強会を開いたときのことを思い出すような内容でした。

「Rの使い方の初歩」を教えようとするとどうしても四則演算と代入と関数の使い方程度で終わってしまうし、「Rでできるすごいこと」を教えようとすると内容を説明しきれないスクリプトを動かすことになるし、やっぱりこの辺のバランスの取り方は難しいなという印象です。

ただ、周りの人の興味を惹きつけている様子はうかがえました。「こんなに簡単に動かせるんだ」と「こんなに複雑なこともできるんだ」をうまくアピールした結果であるように思います。

ただ、今後、たとえば「第2回」と言うことになった場合、話をどのように進めるのだろうか、ということは気になります。たとえば、関数定義の方法はどの段階で説明するのか、スコープや環境のような理解しにくい概念をどのように解説するのか、Rは全部関数だし、というかむしろLISPだし、とりあえず悟りをひらくまではLISPを勉強しなければならない、等々。本当に興味を持った人は勝手に自分で勉強していくのでしょうが、やっぱりEx○elを駆逐したいなぁと思わずにはいられない訳で…

また、「たまにバグもある」とか「繰り返し処理が遅い」とかは自分もたまに言ってしまうんですが、何も知らない人は割とその辺不安に思ってしまうようなので黙ってた方がいいのかなーとも思いました。バグはあるとしてもExcelより遙かにまし、繰り返し処理は遅いと言ってもVBAより遙かにまし、等々の補足が有効かなと思います。

まとめ

非常に多くの人が参加しているのが印象的でした。Rの知名度もかなり高くなったのかなーと感じました。

ただ、自分も含め、既にRを使っているという人もちらほら居ましたが、基本的には使ったことの無い人が殆どでした。

今回のOSのための事前準備(Rとパッケージのインストール)だけでも戸惑ったという人も居て、やはりちょっと敷居の高い部分もあるのかもしれません。

今回のような初心者向け勉強会がもっと開催されて農業気象や農業分野でのユーザーがもっと増えるといいなーと思います。


あと電源はとても大切だと思いました。MBAほしい…。