ネタっぽかったR単語帳ですが、僕の中ですごいいいので機能追加などしました。やった量が可視化なりできれば、やる気が出る(見える化)というわけですが、それを作ろうと。で、こんな関数を用意した。
# 初期化用 # old <- data.frame(date=Sys.time(),t(apply(tango[1:nrow(tango),][c("num_of_right","num_of_mistake","complete")],2,sum))) record <- function(old,tango){ cum <- data.frame(date=Sys.time(),t(apply(tango[1:nrow(tango),][c("num_of_right","num_of_mistake","complete")],2,sum))) eval(parse(text=paste(deparse(substitute(old))," <<- rbind(",deparse(substitute(old)),",cum)",sep=""))) }
で、こんな感じに実行します。日時と累積が出てきますので、差分などを取ると一日の学習量みたいな感じでできます。表でもいいし、グラフで可視化もRなら楽勝ですね。時系列とかでやればいいんじゃないかな!
> record(old,tango) > old date num_of_right num_of_mistake complete 1 2008-06-16 03:18:10 150 103 14 2 2008-06-16 03:53:35 157 103 15 3 2008-06-16 03:55:43 164 103 17
で、ちょっとコードが複雑になっているんですが。。。本来ならば、こういう風に書きたかった。
> old <- record(old,tango)
だけど、これだと代入先を間違えると学習記録がおじゃんになってしまいます。これはいかん!!
というわけでeval(parse(text=))のいつものコンビを使って、上のを動的に作り出しているわけです。でも、関数内のoldと引数に来るoldの名前がoldで一致するかは保証がないので(意味不明な日本語www)、deparse(substitute(old))とかやっているわけです。deparse(substitute(old))とかの使い方、意味等は昔のが参考になるかもしれない。
- 画像ファイルに変数名を使う - Seeking for my unique color.
- Rで画像の自動生成 - Seeking for my unique color.
- クロス表をグラフまで出力するところをRで自動化するための俺俺関数 - Seeking for my unique color.
- R勉強会第五回ということでグラフィックスの勉強をやったよ - Seeking for my unique color.
で、これでもまだだめで。ただの代入だと関数を出た後までスコープがないので(また日本語が(ry)、永続代入などをしています。
この辺のask_jaとかの関数は文字列を引数として取ることでdeparse(substitute(old))みたいなのがやってないわけですね。まあ、このrecordの例だとdeparse(substitute(old))を使わないとだめですが。
par(mfrow=c(2,1)) plot(old$date,old$complete,type="l",main="number of completes",lwd=5,cex=2,lty=1,col=4) plot(old$date,old$num_of_right,type="l",main="number of right",lwd=5,cex=2,lty=1,col=2)